雄辩的JavaScript:

雄辩的JavaScript:,javascript,Javascript,在《雄辩的JavaScript》一书的第5章中,有一个我不太理解的例子。这是嘈杂的功能: 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); // → c

在《雄辩的JavaScript》一书的第5章中,有一个我不太理解的例子。这是嘈杂的功能:

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
调用Noise时,它有两个参数(布尔值)(0)。这是怎么回事?你能用那种方式调用函数和放置参数吗?非常感谢您的帮助,谢谢

你能用那种方式调用函数和放置参数吗

是,其中函数是从初始函数返回的

function noisy(f) {
  // return anonymous function 
  // `f` : `Boolean` , `arg` : `0`
  return function(arg) {
    // `arg` : `0`
    console.log("calling with", arg);
    // `f` : `Boolean` , `arg` : `0`
    var val = f(arg);
    // `arg` : `0` , `val` : `false`
    console.log("called with", arg, "- got", val);
    // return `false` : `Boolean(0)`
    return val;
  };
}
// call `noisy` with `Boolean` as parameter,
// where anonymous function returned from `noisy`
// call anonymous function returned from `noisy` with `0`
// as parameter
noisy(Boolean)(0);

Boolean
作为参数
f
被传递到
noised
Noised
本身返回一个函数,
0
作为参数
arg

传入该返回函数,它调用2个函数,Noised,然后是Noised返回的匿名函数。“调用Noised时,它有两个参数”否,它只有一个参数。
(0)
是对不同函数的单独调用。