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存储,我不明白吗?感谢您
答案 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 不会再次填充,因此其值保持不变。