我正在学习编码,我正在尝试理解高阶函数和抽象。我不明白这段代码如何运行以返回“true”。
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
感谢您的帮助。
答案 0 :(得分:12)
函数greaterThan
在调用时返回一个函数。即使在函数返回后,返回的函数也可以访问外部函数的所有成员。这称为closure
。
function greaterThan(n) {
return function (m) {
return m > n;
};
}
执行以下语句时
var greaterThan10 = greaterThan(10);
将其转换为
var greaterThan10 = function (m) {
return m > 10;
};
所以,greaterThan10
现在是函数,可以被称为
console.log(greaterThan10(11));
现在,m
的值为11
,return 11 > 10;
的值为true
。
了解有关闭包的更多信息:
How do JavaScript closures work?
另外,我建议对所有JS开发人员
进行精彩文章