您可以使用 javascript 个函数来创建其他函数。这是如何运作的?

You can have javascript functions that create other functions. How does this work?

function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// true

我正在尝试了解高阶函数。我知道上面有一个函数可以在其中创建另一个函数。我也明白 greaterThan10 存储函数: return function(m) { return m > n; };

我不明白 true 的结果如何?通过 11 不会覆盖之前通过的 10 吗? 10 和 11 是如何存储的,我不明白?谢谢

调用 var greaterThan10 = greaterThan(10); 导致 greaterThan10 具有以下值:

var greaterThan10 = function (m) { return m > 10; };

因此,以 11 作为参数调用此函数(如您的示例)returns 11 > 10,这是正确的。

Doesn't passing the 11 override the 10 passed previously?

不,因为 greaterThan 函数用 10 调用了一次。所以,n 填充了 10

之后 greaterThan10 函数被调用,其值 11 填充 m(不是 n 因为 greaterThan10 采用参数 m) 并且 n 根本没有被触及,因为它采用存储在greaterThan.

的引用

请注意,greaterThan 函数不会再次调用,因此 n 不会再次填充,因此其值保持不变。