在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)。这是如何运作的?你可以调用函数并以这种方式放置参数吗?非常感谢任何帮助,谢谢!
答案 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
被传递到f
。 noisy
本身返回一个函数,0
作为参数arg
传递给返回的函数。