我正在为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>
我认为我在检查参数方面失败了。我尝试了许多不同的配置,但我被卡住了。有什么建议??
由于
答案 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