gpt4 book ai didi

javascript - JavaScript 中的闭包 - 出了什么问题?

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

我试图关闭下一个:

function func(number) {
var result = number;

var res = function(num) {
return result + num;
};
return res;
}

var result = func(2)(3)(4)(5)(3);
console.log(result); // 17

我需要收到 2 + 3 + 4 + 5 + 3 = 17但我得到了一个错误:Uncaught TypeError: number is not a function

最佳答案

您必须以某种方式发出信号链的末尾信号,您将在其中返回结果编号而不是另一个函数。您可以选择:

  • 让它返回一个函数固定次数 - 这是使用语法的唯一方法,但它很无聊。看看@PaulS 的回答。您可以在第一次调用 (func(n)) 中提供参数 sum 的数量 curried .
  • 在某些情况下返回结果,例如当调用不带参数的函数(@PaulS 的第二个实现)或使用特殊值(@AmoghTalpallikar 的答案中的 null)时。
  • 在函数对象上创建一个返回值的方法。 valueOf() 非常适合,因为当函数转换为原始值时它将被调用。查看实际效果:

    function func(x) {
    function ret(y) {
    return func(x+y);
    }
    ret.valueOf = function() {
    return x;
    };
    return ret;
    }

    func(2) // Function
    func(2).valueOf() // 2
    func(2)(3) // Function
    func(2)(3).valueOf() // 5
    func(2)(3)(4)(5)(3) // Function
    func(2)(3)(4)(5)(3)+0 // 17

关于javascript - JavaScript 中的闭包 - 出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18066322/

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