雄辩的JavaScript:

时间:2016-01-01 01:17:06

标签: javascript

在Eloquent 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

当调用有噪声时,它有两个参数(布尔值)(0)。这是如何运作的?你可以调用函数并以这种方式放置参数吗?非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

  

你能以这种方式调用函数并放置参数吗?

是,从初始函数返回函数

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);

答案 1 :(得分:1)

Boolean作为参数noisy被传递到fnoisy本身返回一个函数,0作为参数arg传递给返回的函数。

相关问题