Nat*_*lia 0 javascript recursion tail-recursion
我想创建一个添加参数的函数.应该调用这个函数
functionAdd(2)(3)(4)...(n);
Run Code Online (Sandbox Code Playgroud)
结果2 + 3 + 4 ... + n我正在尝试这个
function myfunction(num){
var summ =+ num;
if(num !== undefined){
return myfunction(summ);
}
};
Run Code Online (Sandbox Code Playgroud)
但它不起作用,ovwerflow的错误.而且我不明白我应该从这个功能中找到什么;
你可以用它.valueOf
来做的诀窍:
function myfunction(sum){
var accum = function(val) {
sum += val;
return accum;
};
accum.valueOf = function() {
return sum;
};
return accum(0);
};
var total = myfunction(1)(2)(3)(4);
console.log(total); // 10
Run Code Online (Sandbox Code Playgroud)
JSFiddle:http://jsfiddle.net/vdkwhxrL/
这个怎么运作:
在每次迭代时,您都会返回对累加器函数的引用.但是当你请求结果时 - .valueOf()
被调用,它会返回一个标量值.
请注意,结果仍然是一个功能.最重要的是,这意味着它不会在作业中被复制:
var copy = total
var trueCopy = +total // explicit conversion to number
console.log(copy) // 10 ; so far so good
console.log(typeof copy) // function
console.log(trueCopy) // 10
console.log(typeof trueCopy) // number
console.log(total(5)) // 15
console.log(copy) // 15 too!
console.log(trueCopy) // 10
Run Code Online (Sandbox Code Playgroud)