Javascript 我能够在面试中解决addNum(4,5)和addNum(4)(5),但如果addNum(1)(2)…(N)呢?
昨天我参加了一个关于JavaScript的采访 他们问了我一个问题, 为以下内容编写一个程序:Javascript 我能够在面试中解决addNum(4,5)和addNum(4)(5),但如果addNum(1)(2)…(N)呢?,javascript,closures,Javascript,Closures,昨天我参加了一个关于JavaScript的采访 他们问了我一个问题, 为以下内容编写一个程序: addNum(4,5); addNum(4)(5); 我写的。详情如下: var fn18 = function(){ var addNum = function(){ var argLength = arguments.length, num = 0; if(argLength > 1){
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();
我厌倦了递归返回函数,但它会打印整个函数
我的方法应该是什么?这样如何(省略第一种情况的解决方案,addNum(4,5)
):
您可以链接任意多个,并随时调用返回函数上的
.sum
,获取当前的总和。从技术上讲,您不能这样做;不能使用可变函数。你需要告诉我这是最后一个论点。
addNum(2)(3)(4).....(N)
function addNum(num) {
var fun = function(num2) {
fun.sum += num2;
return fun;
}
fun.sum = num;
return fun;
}