下面是我正在挣扎的示例代码:
function greaterThan(x) {
return function(y) {
return y > x;
};
}
var greaterThanTen = greaterThan(10);
show(greaterThanTen(9));有没有办法把它用数学术语来表达,或者遵循流程或什么的?我不知道为什么10是x,9是y。
发布于 2011-10-08 14:10:35
在队伍中:
var greaterThanTen = greaterThan(10);您正在将变量x与值10相结合,然后将函数存储在greaterThanTen变量中,以便稍后调用。这意味着:
greaterThanTen = function(y) {
return y > 10;
};所以当你这么做的时候
greaterThanTen(9); #y = 9你在打电话:
return 9 > 10;发布于 2011-10-08 14:11:42
此函数不调用函数,而是返回函数。
此代码正在创建一个新的一元函数,其中原始二进制(大于)操作符的右操作数预先绑定到特定值。
在lambda微积分中,这种绑定称为竞逐。
在Javascript中,绑定之所以发生,是因为参数x在greaterThan中提供的值永久保留在返回的内部函数(或“闭包”)的作用域中。
所以,当你打电话:
var greaterThanTen = greaterThan(10);现在您拥有的是一个新函数(名为greaterThanTen),它总是将其单个参数与绑定值10进行比较。
因此:
greaterThanTen(9);将返回false。
发布于 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。
https://stackoverflow.com/questions/7697337
复制相似问题