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

时间:2016-06-14 10:35:06

标签: javascript higher-order-functions

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存储,我不明白吗?感谢您

2 个答案:

答案 0 :(得分:2)

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

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

因此,使用11作为参数调用此函数(如示例中所示)将返回11 > 10,这是真的。

答案 1 :(得分:1)

  

不通过11覆盖之前通过的10?

不,因为greaterThan函数被调用一次,因此, n 填充 10

调用greaterThan10函数后,值 11 ,填充 m (不是 n ,因为greaterThan10需要参数 m )和 n 完全没有被触及,因为它采用了greaterThan参考中存储的先前值。

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