javascript书“雄辩的javascript”
function negate(func) {
return function(x) {
return !func(x);
};
}
var isNotNaN = negate(isNaN);
show(isNotNaN(NaN));
有人解释它,正如问题的标题所说,什么是高阶函数,这段代码有什么作用?
javascript书“雄辩的javascript”
function negate(func) {
return function(x) {
return !func(x);
};
}
var isNotNaN = negate(isNaN);
show(isNotNaN(NaN));
有人解释它,正如问题的标题所说,什么是高阶函数,这段代码有什么作用?
当大多数人想到函数时,他们接受对象或值作为参数并类似地返回一个对象或值,例如function addTwoNumbers(int x, int y)
.
在数学和计算机科学中,“高阶函数”就像任何其他函数一样,除了作为值的参数之外,它还可以接受函数作为参数。
...这就是一个高阶函数,真的:)
在您发布的示例中,negate
是一个高阶函数,因为它的参数func
是一个函数(或者更确切地说,分配给一个函数)。
negate
更进一步:它不只是调用func
和否定它的结果,而是返回一个匿名函数(这是内部return function(x)
位)。
因此,该isNotNaN
变量具有早期匿名函数的类型(和值)。
高阶函数是一个函数:
你的代码是做什么的?它否定了函数 isNan(到 isNotNan)。它接受一个函数(isNan),然后输出否定(isNotNan)。就是这么简单。