我正在通过Eloquent Javascript:高阶函数下面的例子和已经阅读的问题和答案here和here。但我仍然很困惑。Eloquent Javascript:高阶函数
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)被传递到嘈杂的(F),因为嘈杂的()只需要一个参数,即(布尔)?我可以看到内部函数f(arg)基本上是布尔(0),但我不明白两个参数如何传入一个只允许一个参数的函数。会“嘈杂(布尔)(0)(1)(2)(3);”是一个有效的函数调用?如果是这样,在噪声函数中,如何区分布尔值后的每个值?哪个值将被“arg”引用?
该书指出示例函数正在修改另一个函数。哪个功能正在修改?我不明白作者的意思是“修改”。
吵(F)返回一个函数,它有一个参数,ARG。用唯一的参数调用这个函数是完全有效的。 –
[Javascript中的高阶函数]的可能重复(http://stackoverflow.com/questions/23535316/higher-order-functions-in-javascript) –
也许'var ModifiedBoolean = noisy(Boolean); console.log(ModifiedBoolean(0))'更容易理解。虽然不是“修改”,“包装”一词可能会更好。 – Bergi