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