1

javascript书“雄辩的javascript”

function negate(func) {
return function(x) {
return !func(x);
 };
}
var isNotNaN = negate(isNaN);
show(isNotNaN(NaN));

有人解释它,正如问题的标题所说,什么是高阶函数,这段代码有什么作用?

4

2 回答 2

2

当大多数人想到函数时,他们接受对象或值作为参数并类似地返回一个对象或值,例如function addTwoNumbers(int x, int y).

在数学和计算机科学中,“高阶函数”就像任何其他函数一样,除了作为值的参数之外,它还可以接受函数作为参数。

...这就是一个高阶函数,真的:)

在您发布的示例中,negate是一个高阶函数,因为它的参数func是一个函数(或者更确切地说,分配给一个函数)。

negate更进一步:它不只是调用func和否定它的结果,而是返回一个匿名函数(这是内部return function(x)位)。

因此,该isNotNaN变量具有早期匿名函数的类型(和值)。

于 2013-03-31T10:12:25.250 回答
0

高阶函数是一个函数:

  • 将一个或多个函数作为输入。
  • 给出另一个函数作为输出。

你的代码是做什么的?它否定了函数 isNan(到 isNotNan)。它接受一个函数(isNan),然后输出否定(isNotNan)。就是这么简单。

于 2013-03-31T10:12:43.520 回答