我最近开始自己学习javascript,我正在读一本名为" Eloquent JavaScript"的书。下面的代码是本书中的一个示例脚本,让我很困惑:
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
有人可以解释最后两行的逻辑吗? greaterThan10
是否包含真值或它是一个函数?
答案 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; };