FCC 中级算法题 Arguments Optional
Arguments Optional
创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。
例如,add(2, 3) 应该返回 5,而 add(2) 应该返回一个 function。
调用这个有一个参数的返回的 function,返回求和的结果:
var sumTwoAnd = add(2);
sumTwoAnd(3) 返回 5。
如果两个参数都不是有效的数字,则返回 undefined。
思路:
(1)如果输入的两个参数都是数字型,就直接返回两个参数之和;
(2)如果只有一个参数且这个参数为数字型,就创建一个闭包,请求第二个参数,如果第二个参数是数字型,就返回两个参数之和;
知识点:
(1)Arguments object是一个类似数组的对象, 对应于传递给函数的参数;
(2)Closures(闭包)是使用被作用域封闭的变量,函数,闭包等执行的一个函数的作用域;
(3)typeof操作符返回一个字符串,指示未经计算的操作数的类型。
代码:
1 function add() {
2 if(typeof arguments[0]==="number"&&typeof arguments[1]==="number"){
3 return arguments[0]+arguments[1];
4 }else if(arguments.length===1&&typeof arguments[0]==="number"){
5 var num1=arguments[0];
6 return function sumTwoAnd(num2){
7 if(typeof num2==="number"){
8 return num1+num2;
9 }
10 };
11 }
12 }
13
14
15 add(2)(1);
FCC 中级算法题 Arguments Optional的更多相关文章
- FCC中级算法(上)
在学习FCC中级算法这一块,自己遇到了很多问题,通过RSA也慢慢把问题解决了,发现每一个问题都会有很多的解决思路,因此把自己想到的一些思路记录到这里. 1. Sum All Numbers in a ...
- fcc的中级算法题
核心提示:这是网上开源编程学习项目FCC的javascript中级编程题(Intermediate Algorithm Scripting(50 hours)),一共20题.建议时间是50个小时,对于 ...
- FCC上的javascript算法题之中级篇
FCC中的javascript中级算法题解答 中级算法的题目中用到了很多js的知识点,比如迭代,闭包,以及对json数据的使用等等,现在将自己中级算法的解答思路整理出来供大家参考讨论.欢迎大家提出新的 ...
- FCC编程题之中级算法篇(上)
介绍 FCC: 全称为freeCodeCamp,是一个非盈利性的.面向全世界的编程练习网站.这次的算法题来源于FCC的中级算法题. FCC中级算法篇共分为(上).(中).(下)三篇.每篇各介绍7道算法 ...
- FCC编程题之中级算法篇(中)
介绍 接着上次的中级算法题 目录 1. Missing letters 2. Boo who 3. Sorted Union 4. Convert HTML Entities 5. Spinal Ta ...
- FCC上的初级算法题
核心提示:FCC的算法题一共16道.跟之前简单到令人发指的基础题目相比,难度是上了一个台阶.主要涉及初步的字符串,数组等运算.仍然属于基础的基础,官方网站给出的建议完成时间为50小时,超出了之前所有非 ...
- FCC编程题之中级算法篇(下)
介绍 本篇是"FCC编程题之中级算法篇"系列的最后一篇 这期完结后,下期开始写高级算法,每篇一题 目录 1. Smallest Common Multiple 2. Finders ...
- FCC的javascript初级算法题解答
FCC上的javascript基础算法题 前一阵子做的基础算法题,感觉做完后收获还蛮大的,现在将自己的做法总结出来,供大家参考讨论.基本上做到尽量简短有效,但有些算法还可以继续简化,比如第七题若采用正 ...
- FreeCodeCamp 中级算法(个人向)
freecodecamp 中级算法地址戳这里 Sum All Numbers in a Range 我们会传递给你一个包含两个数字的数组.返回这两个数字和它们之间所有数字的和. function su ...
- 一道java算法题分析
最近在面试中遇到这样的一道算法题: 求100!的结果的各位数之和为多少? 如:5!=5*4*3*2*1=120,那么他们的和为1+2+0=3这道题不算难,不过倒是注意的细节也有 ...
随机推荐
- v3.x compoistion api 是什么
在Vue 2.x的基础上要解决的问题: 1. 更低成本的达到逻辑复用(mix in :混入,找不着,命名冲突) 2. 代码组织 3. 类型推导更稳定 目标:使得Vue在大型应用中更有竞争力.
- vue v-if不生效
正确写法 <block v-for="(item, index) in imgArray"> <image :src="item" class ...
- 排序算法 | JS
1.冒泡排序 function bubbleSort(arr,order){ let len = arr.length-1,flag=true for(let i=0;(i<len)&& ...
- 多线程学习(第一天)java语言的线程
一.并发与并行 并发:处理器不停的切换有操作的线程. 并行:多个处理器同时执行有操作线程. 二.启动线程 无论是A,B哪种方式实现多线程,都需要通过Thread.start方法启动线程. A.Thre ...
- String intern的理解
String s1 = "Programming"; s1在栈内存中,Programming在常量池中. String s2 = new String("Progra ...
- uniapp 复制 粘贴,系统剪贴板
uniapp里不叫复制粘贴,叫系统剪贴板uni.setClipboardData({ data: this.href, success: () => { uni.hideToast(); thi ...
- mac怎么设置开机自启动项,mac选择开机启动项
转自 https://www.zhangshilong.cn/work/386853.html Login Items Mac OSX的当前用户成功登录后启动的程序,该类别的启动项配置文件存放在~/L ...
- docker容器生命周期管理
查看容器版本 docker version [root@node1 ~]# docker version Client: Docker Engine - Community Version: 20.1 ...
- Django+VUE.js实现图片上传
vue里的代码 <template> <div> 添加商品<input v-model="name"><br> 价格<inpu ...
- Navicat连接Oracle时报错ORA-28547:完美解决
1. 先用你的IDEA或者别人的连接到oracle数据库(为了查询版本) 1.1 查询版本SQL:select * from v$version; 2. 引入对应的oci.dll文件 链接:https ...