首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何理解返回函数的函数?

如何理解返回函数的函数?
EN

Stack Overflow用户
提问于 2011-10-08 14:07:39
回答 5查看 192关注 0票数 2

下面是我正在挣扎的示例代码:

代码语言:javascript
运行
复制
function greaterThan(x) {
  return function(y) {
    return y > x;
  };
}

var greaterThanTen = greaterThan(10);
show(greaterThanTen(9));

有没有办法把它用数学术语来表达,或者遵循流程或什么的?我不知道为什么10是x,9是y。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-08 14:10:35

在队伍中:

代码语言:javascript
运行
复制
var greaterThanTen = greaterThan(10);

您正在将变量x与值10相结合,然后将函数存储在greaterThanTen变量中,以便稍后调用。这意味着:

代码语言:javascript
运行
复制
greaterThanTen = function(y) {
    return y > 10;
};

所以当你这么做的时候

代码语言:javascript
运行
复制
greaterThanTen(9);  #y = 9

你在打电话:

代码语言:javascript
运行
复制
return 9 > 10;
票数 3
EN

Stack Overflow用户

发布于 2011-10-08 14:11:42

此函数不调用函数,而是返回函数。

此代码正在创建一个新的一元函数,其中原始二进制(大于)操作符的右操作数预先绑定到特定值。

lambda微积分中,这种绑定称为竞逐

在Javascript中,绑定之所以发生,是因为参数xgreaterThan中提供的值永久保留在返回的内部函数(或“闭包”)的作用域中。

所以,当你打电话:

代码语言:javascript
运行
复制
var greaterThanTen = greaterThan(10);

现在您拥有的是一个新函数(名为greaterThanTen),它总是将其单个参数与绑定值10进行比较。

因此:

代码语言:javascript
运行
复制
greaterThanTen(9);

将返回false

票数 3
EN

Stack Overflow用户

发布于 2011-10-08 14:13:13

  • 创建greaterThan(10)
  • 创建功能: function(y){return y > x}
  • 返回函数

因此,当调用greaterThan(10)时,函数返回局部变量x设置为10的函数。

var greaterThanTen = greaterThan(10)等于:

var greaterThanTen = function(y){return y > 10};

最后,调用greaterThanTen(9),它等于9 > 10,这是false。

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

https://stackoverflow.com/questions/7697337

复制
相关文章

相似问题

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