通过变量调用函数

时间:2017-04-15 00:40:30

标签: javascript

我最近开始自己学习javascript,我正在读一本名为" Eloquent JavaScript"的书。下面的代码是本书中的一个示例脚本,让我很困惑:

function greaterThan(n) {
   return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10); 
console.log(greaterThan10(11));

有人可以解释最后两行的逻辑吗? greaterThan10是否包含真值或它是一个函数?

2 个答案:

答案 0 :(得分:1)

您在倒数第二行定义greaterThan10

var greaterThan10 = greaterThan(10); 

在这种情况下,greaterThan函数返回的是greaterThan10将评估的内容。

在第2行,我们看到greaterThan将返回以下函数表达式:

function(m) { return m > n; }

将变量n替换为您传递的值后,我们得到:

function(m) { return m > 10; }

答案 1 :(得分:0)

一开始看起来有些混乱,但请记住JavaScript中的函数是对象

greaterThan(n)一个返回匿名函数的函数,其定义为:

function(m) { return m > n; }

因此,当我们调用greaterThan(10)时,我们希望它返回一个实际上是函数的对象:

function(m) { return m > 10; }

稍后我们只是将该对象/函数分配给变量,并像调用任何函数一样调用它。


简而言之,想象一下我们有:

var greaterThan10 = function(m) { return m > 10; };