Javascript 在自己的括号中包含更多参数的函数,将方法添加到函数中

Javascript 在自己的括号中包含更多参数的函数,将方法添加到函数中,javascript,Javascript,您好,作为一个试图学习javascript代码的初学者,我有一个问题 代码的工作方式如下所示(摘自网站:第章:函数对象,NFE) 编写如下所示的函数和: sum(1)(2) == 3; // 1 + 2 sum(1)(2)(3) == 6; // 1 + 2 + 3 sum(5)(-1)(2) == 6 sum(6)(-1)(-2)(-3) == 0 sum(0)(1)(2)(3)(4)(5) == 15 function f(b) { currentSum += b; ret

您好,作为一个试图学习javascript代码的初学者,我有一个问题

代码的工作方式如下所示(摘自网站:第章:函数对象,NFE)

编写如下所示的函数和:

sum(1)(2) == 3; // 1 + 2
sum(1)(2)(3) == 6; // 1 + 2 + 3
sum(5)(-1)(2) == 6
sum(6)(-1)(-2)(-3) == 0
sum(0)(1)(2)(3)(4)(5) == 15
function f(b) {
    currentSum += b;
    return f;

    toString() {
        return currentSum;
    };
}
这就是解决方案:

function sum(a) {

let currentSum = a;

function f(b) {
    currentSum += b;
    return f;
}

f.toString = function() {
    return currentSum;
};

return f;
}

alert( sum(1)(2) ); // 3
alert( sum(5)(-1)(2) ); // 6
alert( sum(6)(-1)(-2)(-3) ); // 0
alert( sum(0)(1)(2)(3)(4)(5) ); // 15
由于注释,我现在已经理解了什么是咖喱,但我的最后一个问题是函数f(b)的方法

它是干什么的?它只是代替了警告函数的整个语法,警告currentSum,如果是,为什么不能在函数(b)中写入 像这样:

sum(1)(2) == 3; // 1 + 2
sum(1)(2)(3) == 6; // 1 + 2 + 3
sum(5)(-1)(2) == 6
sum(6)(-1)(-2)(-3) == 0
sum(0)(1)(2)(3)(4)(5) == 15
function f(b) {
    currentSum += b;
    return f;

    toString() {
        return currentSum;
    };
}
它只是代替了警告currentSum函数的整个语法吗

是的,这就是它的作用。当面对对象(函数是对象)时,
alert
尝试将其转换为字符串,基本上就像您执行了
alert(…..toString())
一样

为什么不能这样写在函数(b)中


因为这是一个语法错误,所以这不是将属性(方法)附加到函数的方式。尽管函数是对象,但这并不意味着你可以把方法定义放在它的中间,就好像它是一个对象文字一样。p> 使用调试器并逐行遍历代码。看,你可能想做一些关于函数转换的研究。你的问题到底是什么?听起来您在理解代码方面有困难,希望我们提供帮助,但您到底不理解什么?(最好是开始解释你所理解的东西)。看一看,