This question already has answers here:
What do multiple arrow functions mean in javascript?
                                
                                    (7个答案)
                                
                        
                                2年前关闭。
            
                    
this documentation到闭包:

function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);

console.log(add5(2));  // 7
console.log(add10(2)); // 12


我不明白如何在makeAdder(5)中将参数作为x接收,但是在add5(2)中是y

我希望它两次都说y is undefined。谁能解释它的运作方式?

最佳答案

当您调用makeAdder()时,它将返回一个函数(不是值)。因此,要使用它,您将获得类似

makeAdder(4)(5)


这将4加到5并返回9。同样,这里的makeAdder()返回另一个函数,这就是为什么我在其后调用参数((5))的原因。

如果您想进一步阅读,这是JavaScript中的一个概念,称为currying。它是一种功能编程技术。

07-24 09:17