我正在学习编码,并试图理解高阶函数和抽象。我不明白这段代码如何运行以返回“true”。
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
谢谢您的帮助。
功能greaterThan
调用时返回一个函数。即使函数返回后,返回的函数也可以访问外部函数的所有成员。这就是所谓的closure https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures.
function greaterThan(n) {
return function (m) {
return m > n;
};
}
当执行以下语句时
var greaterThan10 = greaterThan(10);
它被转换为
var greaterThan10 = function (m) {
return m > 10;
};
So, greaterThan10
现在是函数,可以调用为
console.log(greaterThan10(11));
现在,值m
is 11
and return 11 > 10;
返回为true
.
了解有关闭包的更多信息:
JavaScript 闭包如何工作? https://stackoverflow.com/questions/111102/how-do-javascript-closures-work
另外,我会推荐以下很棒的文章致所有 JS 开发者
http://dmitryfrank.com/articles/js_closures http://dmitryfrank.com/articles/js_closures
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)