雄辩的JavaScript:
在《雄辩的JavaScript》一书的第5章中,有一个我不太理解的例子。这是嘈杂的功能:雄辩的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
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)
是对不同函数的单独调用。