以下是我正在努力解决的示例代码:
function greaterThan(x) {
return function(y) {
return y > x;
};
}
var greaterThanTen = greaterThan(10);
show(greaterThanTen(9));
有没有办法用数学术语或遵循流程或其他东西? 我不知道为什么10是x而9是y。
答案 0 :(得分:4)
在行中:
var greaterThanTen = greaterThan(10);
您正在将变量x赋值为10,然后将该函数存储在稍后要调用的greaterThanTen变量中。这意味着:
greaterThanTen = function(y) {
return y > 10;
};
所以当你这样做时:
greaterThanTen(9); #y = 9
您正在致电:
return 9 > 10;
答案 1 :(得分:4)
此函数不调用函数,返回函数。
此代码正在创建一个新的一元函数,其中原始二进制(大于)运算符的右侧操作数预绑定到特定的值。
在lambda calculus中,此约束称为currying。
在Javascript中发生绑定是因为x
中参数greaterThan
的提供值永久保留在返回的内部函数(或“闭包”)的范围内。
所以,当你打电话:
var greaterThanTen = greaterThan(10);
您现在拥有的是一个 new 函数(名为greaterThanTen
),始终将其单个参数与绑定值10进行比较。
因此:
greaterThanTen(9);
将返回false
。
答案 2 :(得分:2)
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
,这是假的。
答案 3 :(得分:2)
greaterThan 唯一能做的就是在
中设置 x 的值function(y){return(y> x);}
并将结果函数存储在变量名称中,在本例中为 greaterThanTen ,现在包含内容
function(y){return(y> 10);}
拨打 greaterThanTen(9)与查看相同
function(y = 9){return(y> 10);}
与
相同function(y = 9){return(9> 10);}
这是假的。因此返回 false 。
修改强> 的
在此返回函数的函数示例:http://i.imgur.com/aiHSH.jpg(x和y在y> x中切换)
合十
答案 4 :(得分:0)
greaterThanTen
变量表示一个函数接受一个参数并返回一个布尔值,无论该参数是否大于10。