这是怎么回事;“高阶函数”;这东西在Javascript中工作
从Marijn Haverbeke的《雄辩的Javascript》一书中可以看出,在介绍高阶函数的概念时:这是怎么回事;“高阶函数”;这东西在Javascript中工作,javascript,higher-order-functions,confirmation,Javascript,Higher Order Functions,Confirmation,从Marijn Haverbeke的《雄辩的Javascript》一书中可以看出,在介绍高阶函数的概念时: function greaterThan(n) { return function(m) { return m > n; }; } var greaterThan10 = greaterThan(10); console.log(greaterThan10(11)); // → true 我不太清楚这是怎么回事。。。可能回答了我自己的问题,但我是这么看的: 首先,在此行中调用
function greaterThan(n) {
return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// → true
我不太清楚这是怎么回事。。。可能回答了我自己的问题,但我是这么看的:
- 首先,在此行中调用
,将其值赋给greaterThan(n)
变量:greaterThan10
var greaterThan10 = greaterThan(10);
- 这使得存储为
大于10的函数看起来像:
function greaterThan(10) { return function(m) { return m > 10; }; }
- 然后,当您调用
时,您正在调用上面的函数,这将转换为:greaterThan10(11)
因此,返回function greaterThan(10) { return function(11) { return 11 > 10; }; }
作为True
11>10的结果确实是真的
有人能证实我说的对不对吗?另外,如果有人能提供关于这个高阶函数如何在JavaScript中工作的更多细节和评论,我们将不胜感激 从理解的角度来看,你是对的,但评估结果略有不同
var greaterThan10 = greaterThan(10);
此行不会使存储为greaterThan10
的函数“看起来像”任何东西-它创建一个新函数,将变量n
传递给它,使greaterThan10
成为一个看起来像
var greaterThan10 = function(m) { return m > 10; };
当您调用它时,您是直接调用此函数,而不再使用原始函数。从理解的角度来看,您是正确的,但它的计算方式略有不同
var greaterThan10 = greaterThan(10);
此行不会使存储为greaterThan10
的函数“看起来像”任何东西-它创建一个新函数,将变量n
传递给它,使greaterThan10
成为一个看起来像
var greaterThan10 = function(m) { return m > 10; };
当您调用它时,您是直接调用此函数,而不再使用原始函数。从理解的角度来看,您是正确的,但它的计算方式略有不同
var greaterThan10 = greaterThan(10);
此行不会使存储为greaterThan10
的函数“看起来像”任何东西-它创建一个新函数,将变量n
传递给它,使greaterThan10
成为一个看起来像
var greaterThan10 = function(m) { return m > 10; };
当您调用它时,您是直接调用此函数,而不再使用原始函数。从理解的角度来看,您是正确的,但它的计算方式略有不同
var greaterThan10 = greaterThan(10);
此行不会使存储为greaterThan10
的函数“看起来像”任何东西-它创建一个新函数,将变量n
传递给它,使greaterThan10
成为一个看起来像
var greaterThan10 = function(m) { return m > 10; };
当您调用它时,您是直接调用此函数,不再使用原始函数。我在阅读示例时也感到困惑,但后来得出如下结论: 在第3章:函数中,已经解释了如何使用箭头符号(
=>
)声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则可以在参数列表周围加括号。因此,m
是一个参数,而不是函数名
因此,在第一次调用greaterThan(10)
之后,greaterThan(10)
基本上变为
var greaterThan10 = function (m) { return m > 10; }
在第二次调用之后,大于10(11)
,它变为
function (11) { return 11 > 10; }
11>10,返回true。我在阅读示例时也感到困惑,但后来得出如下结论: 在第3章:函数中,已经解释了如何使用箭头符号(
=>
)声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则可以在参数列表周围加括号。因此,m
是一个参数,而不是函数名
因此,在第一次调用greaterThan(10)
之后,greaterThan(10)
基本上变为
var greaterThan10 = function (m) { return m > 10; }
在第二次调用之后,大于10(11)
,它变为
function (11) { return 11 > 10; }
11>10,返回true。我在阅读示例时也感到困惑,但后来得出如下结论: 在第3章:函数中,已经解释了如何使用箭头符号(
=>
)声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则可以在参数列表周围加括号。因此,m
是一个参数,而不是函数名
因此,在第一次调用greaterThan(10)
之后,greaterThan(10)
基本上变为
var greaterThan10 = function (m) { return m > 10; }
在第二次调用之后,大于10(11)
,它变为
function (11) { return 11 > 10; }
11>10,返回true。我在阅读示例时也感到困惑,但后来得出如下结论: 在第3章:函数中,已经解释了如何使用箭头符号(
=>
)声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则可以在参数列表周围加括号。因此,m
是一个参数,而不是函数名
因此,在第一次调用greaterThan(10)
之后,greaterThan(10)
基本上变为
var greaterThan10 = function (m) { return m > 10; }
在第二次调用之后,大于10(11)
,它变为
function (11) { return 11 > 10; }
11>10,返回true。Yes。。。在这里,
n
正在成为一个可变的是。。。在这里,n
正在成为一个可变的是。。。在这里,n
正在成为一个可变的是。。。这里n
正在成为一个变量