Arguments Optional FreeCodeCamp

  

function add() {
  if(typeof arguments[0] !== "number" || (arguments.length > 1 && typeof arguments[1] !== "number")){
    return undefined;
  }
  if(arguments.length == 1){
    var arg0 = arguments[0];
    return function(num){
      if(typeof num !== "number"){
        return undefined;
      }
      return arg0 + num;
    };
  }else{
    return arguments[0] + arguments[1];
  }
}

题目: 

  创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。

  例如,add(2, 3) 应该返回 5,而 add(2) 应该返回一个 function。

  调用这个有一个参数的返回的 function,返回求和的结果:

  var sumTwoAnd = add(2);

  sumTwoAnd(3) 返回 5

  如果两个参数都不是有效的数字,则返回 undefined。

分析:

  闭包是函数和声明该函数的词法环境的组合。

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures

  arguments 是一个对应于传递给函数的参数的类数组对象。

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/arguments

  typeof操作符返回一个字符串,表示未经计算的操作数的类型。

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/typeof

参考博客:

  http://www.cnblogs.com/fffangrui/p/6114402.html

转载于:https://www.cnblogs.com/zhrngM/p/8645497.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值