我最近开始自学javascript,我正在读一本叫做“雄辩的JavaScript”的书。以下代码是本书中的示例脚本,让我感到困惑:
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));谁能解释一下最后两行的逻辑吗?greaterThan10是包含真值还是函数?
发布于 2017-04-15 00:57:00
一开始它看起来有点混乱,但请记住,函数是JavaScript中的对象。
greaterThan(n)是--一个返回带有定义的匿名函数的函数:
function(m) { return m > n; }因此,当我们调用greaterThan(10)时,我们希望它返回一个实际上是函数的对象:
function(m) { return m > 10; }稍后,我们只将该对象/函数赋值给一个变量,然后调用它,就像调用任何函数一样。
简而言之,想象一下我们有:
var greaterThan10 = function(m) { return m > 10; };发布于 2017-04-15 00:48:02
在第二行到最后一行中定义greaterThan10:
var greaterThan10 = greaterThan(10); 在本例中,无论greaterThan函数返回什么,greaterThan10都将对其进行计算。
在第2行中,我们看到greaterThan将返回以下函数表达式:
function(m) { return m > n; }在将变量n替换为您传递的值之后,我们得到如下结果:
function(m) { return m > 10; }https://stackoverflow.com/questions/43420972
复制相似问题