函数迭代可选参数算法挑战
问题:
创建一个计算两个参数之和的 function。如果只有一个参数,则返回一个 function,该 function 请求一个参数然后返回求和的结果。
例如,add(2, 3)
应该返回 5
,而 add(2)
应该返回一个 function。
调用这个有一个参数的返回的 function,返回求和的结果:
var sumTwoAnd = add(2);
sumTwoAnd(3)
返回 5
。
如果两个参数都不是有效的数字,则返回 undefined。
要求:
add(2, 3)
应该返回 5。
add(2)(3)
应该返回 5。
add("http://bit.ly/IqT6zt")
应该返回 undefined。
add(2, "3")
应该返回 undefined。
add(2)([3])
应该返回 undefined。
问题答案:
function add() {
if(typeof arguments[0]=="number" && typeof arguments[1]=="number"){
return arguments[0]+arguments[1];
}
else if(arguments.length==1 && typeof arguments[0]=="number"){
var x=arguments[0];
//如果只有一个数字型参数x,返回x和后面捕捉到的任意一个数字型参数y之和
return function(y){
if(typeof y =="number"){
return x+y;
}
};
}
}
add(2,3);