高阶函数在javascript中意味着什么?

时间:2013-03-31 10:04:34

标签: javascript function

javascript book“eloquent javascript”

function negate(func) {
return function(x) {
return !func(x);
 };
}
var isNotNaN = negate(isNaN);
show(isNotNaN(NaN));
有人解释它,问题的标题是什么是高阶函数,这个代码做了什么?

2 个答案:

答案 0 :(得分:1)

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

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

......所有高阶函数都是,真的:)

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

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

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

答案 1 :(得分:0)

高阶函数是一个函数:

  • 将一个或多个功能作为输入。
  • 将另一个功能作为输出。

您的代码有什么作用?它否定了函数isNan(to isNotNan)。它接受一个函数(isNan),然后输出否定(isNotNan)。就是这么简单。