首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这种“高阶函数”在Javascript中是如何工作的?

这种“高阶函数”在Javascript中是如何工作的?
EN

Stack Overflow用户
提问于 2015-07-02 05:29:38
回答 2查看 653关注 0票数 1

从Marijn Haverbeke的“雄辩的Javascript”一书中,我们可以看到这个例子在引入高阶函数的概念时:

代码语言: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中的高阶函数如何工作,这将是非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-02 05:33:08

从一定程度的理解来看,你是对的,但对它的评价略有不同。

代码语言:javascript
复制
var greaterThan10 = greaterThan(10);

这一行不会使存储为greaterThan10的函数“看起来像”任何东西--它创建一个新函数,将变量n传递给它,这样greaterThan10就变成了一个看起来像

代码语言:javascript
复制
var greaterThan10 = function(m) { return m > 10; };

当您调用它时,您将直接调用此函数,而不再遍历原始函数。

票数 3
EN

Stack Overflow用户

发布于 2018-03-11 06:50:52

在阅读示例时,我也感到困惑,但后来得出的结论如下:

在第3章:函数中,解释了如何使用箭头符号(=>)声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则可以在参数列表周围省略括号。因此,m是一个参数,而不是函数名。

所以,在第一次调用greaterThan(10)之后,greaterThan10本质上变成

代码语言:javascript
复制
var greaterThan10 = function (m) { return m > 10; }

在第二个调用greaterThan10(11)之后,它变成

代码语言:javascript
复制
function (11) { return 11 > 10; }

11 > 10,返回true。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31176240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档