昨天我参加了一个关于 JavaScript 的面试,
他们问了我一个问题, 编写一个程序,
addNum(4,5);
addNum(4)(5);
我写的。如下
var fn18 = function(){
var addNum = function(){
var argLength = arguments.length,
num = 0;
if(argLength > 1){
for(var x=0;x < argLength; x++){
num += parseInt(arguments[x],10);
}
return num;
}else if(argLength == 1){
num = arguments[0];
var fn = function (param){
var n = num + param;
return n;
}
return fn;
}else{
return 0;
}
};
print("1> addNum(2,4) => "+addNum(2,4)+"\n");
print("2> addNum(2)(5) => "+addNum(2)(5)+"\n");
print("3> addNum() => "+addNum()+"\n");
};
fn18();
上面的程序运行良好。 请忽略“print”关键字,因为我在 Java 上的 Rhino 库上运行它。
所以我的问题是我应该如何解决这个问题
addNum(2)(3)(4).....(N)
我厌倦了递归返回函数,但它打印了整个函数。
我的方法应该是什么?
最佳答案
这个怎么样(省略第一种情况的解决方案,addNum(4,5)
):
function addNum(num) {
var fun = function(num2) {
fun.sum += num2;
return fun;
}
fun.sum = num;
return fun;
}
您可以链接任意多个,并随时调用返回函数的 .sum
并获取当前总和。
关于javascript - 我在面试中能够解决 addNum(4,5) 和 addNum(4)(5),但是如果 addNum(1)(2)...(N) 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28316210/