为什么从函数调用func?

use*_*069 -1 javascript

function negate(func) {
  return function(x) {
    return !func(x);
  };
}
var isNotNaN = negate(isNaN);
show(isNotNaN(NaN));
Run Code Online (Sandbox Code Playgroud)

这是我正在阅读的一本javascript书.func用作函数的参数x和前面的否定符号.怎么会?

T.J*_*der 5

negate函数接受一个函数作为参数,并返回一个它创建的新函数,当调用它时,将使用您给它的参数调用原始函数,否定该函数的返回值,并返回该否定值.

negate用于创建一个我们分配给isNotNaN它的函数,当被调用时,将调用isNaN你传递它的任何参数并否定结果.

所以当你打电话isNotNaNNaN,isNotNaN电话isNaN(NaN)会回来true.isNotNaN然后否定,获得false并返回该值.

  • @Amberlamps:我认为这本书可能试图用一个简单的例子来讨论闭包.我可能不会在任何想要简单的例子中使用`NaN`.:-) (3认同)