从Marijn Haverbeke的“雄辩的Javascript”一书中,我们可以看到这个例子在引入高阶函数的概念时:
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// → true我不太清楚这是怎么回事。也许是在回答我自己的问题,但我是这么看的:
greaterThan(n),将其值赋值给greaterThan10变量:
变量greaterThan10 = greaterThan(10);greaterThan10的函数如下所示:
函数greaterThan(10) {返回函数(M){返回m> 10;};}greaterThan10(11)时,您将调用上面的函数,这将转换为:
函数greaterThan(10) {返回函数( 11 ){返回11> 10;};}
因此,将True作为结果作为11 > 10返回是真的。有人能确认我是否正确吗?此外,如果有人能提供更多的细节和评论如何在JavaScript中的高阶函数如何工作,这将是非常感谢。
发布于 2015-07-02 05:33:08
从一定程度的理解来看,你是对的,但对它的评价略有不同。
var greaterThan10 = greaterThan(10);这一行不会使存储为greaterThan10的函数“看起来像”任何东西--它创建一个新函数,将变量n传递给它,这样greaterThan10就变成了一个看起来像
var greaterThan10 = function(m) { return m > 10; };当您调用它时,您将直接调用此函数,而不再遍历原始函数。
发布于 2018-03-11 06:50:52
在阅读示例时,我也感到困惑,但后来得出的结论如下:
在第3章:函数中,解释了如何使用箭头符号(=>)声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则可以在参数列表周围省略括号。因此,m是一个参数,而不是函数名。
所以,在第一次调用greaterThan(10)之后,greaterThan10本质上变成
var greaterThan10 = function (m) { return m > 10; }在第二个调用greaterThan10(11)之后,它变成
function (11) { return 11 > 10; }11 > 10,返回true。
https://stackoverflow.com/questions/31176240
复制相似问题