在javascript中使用闭包求和两个参数

时间:2016-07-25 11:14:50

标签: javascript function closures

我正在为freecodecamp做一个练习,我必须创建一个将两个参数加在一起的函数。如果只提供了一个参数,则返回一个需要一个参数并返回总和的函数。

例如,addTogether(2,3)应返回5,addTogether(2)应返回一个函数。

我的代码如下:

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function isFunction(functionToCheck) {
 var getType = {};
 return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}

function addTogether() {
  var args = Array.prototype.slice.call(arguments);
  var param1=args[0];

  var sum=function(){
    var argSub=Array.prototype.slice.call(arguments);
    var param2=argSub[0];
    if (isNumber(param2))
       return;
    else
      return param1+param2;
  };

  if (args.length===1){
    return sum;
  } else if (isNumber(param1)){
    return param1+args[1];
  }
}

addTogether(2,3);

当我 addTogether(2)(3)应该返回5 时,当我执行 addTogether(2,“3”)时应该返回'undefined'。< / p>

我认为我在检查参数方面失败了。我尝试了许多不同的配置,但我被卡住了。有什么建议??

由于

1 个答案:

答案 0 :(得分:-1)

使用闭包来添加数字。几条线被评论,以了解如何调用内部函数。 参考:Javascript中的闭包和IIFE。

function sum(x) {
  var input = x;

  function add(y) {
    return input + y;
  }
  return add;
}
//var sum1 = sum(2);
//console.log(sum1(3)); // 5
console.log(sum(2)(3)); //5