我正在通過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