2015-09-24 63 views
4

我正在学习代码,并试图理解高阶函数和抽象。我不明白这段代码如何运行返回“true”。有人可以向我解释这个功能是如何工作的吗?

function greaterThan(n) { 
    return function(m) { return m > n; }; 
} 

var greaterThan10 = greaterThan(10); 

console.log(greaterThan10(11)); 

感谢您的帮助。

+0

我明白M> N,I”试图了解这些值是如何分配给m和n的。 –

+2

内部函数通过闭包来记住它的上下文,所以函数知道你已经通过的n和m的值。 – Sumeet

回答

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)); 

,价值o f m11return 11 > 10;返回为true

了解更多关于关闭:

How do JavaScript closures work?

而且,我给你推荐以下大文章所有JS开发

http://dmitryfrank.com/articles/js_closures

相关问题