JavaScript - 此高阶函数的含义

Wri*_*lva 3 javascript function higher-order-functions

首先对不起,如果我没有在正确的地方张贴或者已经有重复,但我不知道该怎么称呼它或如何搜索它.

有人可以向我解释下面的代码是什么意思:

function noisy(f) {
  return function(arg) {
    console.log("calling with", arg);
    var val = f(arg);
    console.log("called with", arg, "- got", val);
    return val;
  };
}
noisy(Boolean)(0);
// ? calling with 0
// ? called with 0 - got false
Run Code Online (Sandbox Code Playgroud)

为什么函数调用后需要(布尔)?

noisy(Boolean)(0);
Run Code Online (Sandbox Code Playgroud)

我怎么称呼这种函数调用?

提前致谢!

Gab*_*gan 5

这很棘手.(Boolean)可能会把你扔到这里,但实际上它只是一个常规的旧参数.您可以替换Boolean任何功能,例如doStuff,它仍然可以工作.

是的,正如你所指出的,这是一个重复的问题.你正在寻找一种叫做"封闭"的东西.这是StackOverflow的精彩答案:

JavaScript闭包如何工作?