gpt4 book ai didi

javascript - JavaScript 中的尾部函数

转载 作者:行者123 更新时间:2023-11-28 13:25:42 26 4
gpt4 key购买 nike

我想创建一个添加参数的函数。调用这个函数应该是

functionAdd(2)(3)(4)...(n);

结果为 2+3+4...+n我正在尝试这个

function myfunction(num){
var summ =+ num;
if(num !== undefined){
return myfunction(summ);
}

};

但是不起作用,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

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

关于javascript - JavaScript 中的尾部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29376702/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com