我想创建一个添加参数的函数。调用这个函数应该是
functionAdd(2)(3)(4)...(n);
结果 2+3+4...+n
我正在尝试这个
function myfunction(num){
var summ =+ num;
if(num !== undefined){
return myfunction(summ);
}
};
但它不起作用,overwerflow错误。我不明白我应该从这个函数中摆脱出来;
您可以使用.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
JSFiddle:http://jsfiddle.net/vdkwhxrL/ http://jsfiddle.net/vdkwhxrL/
怎么运行的:
在每次迭代中,您都会返回对累加器函数的引用。但是当你请求结果时 -.valueOf() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)