0
我正在閱讀優秀Eloquent Javascript的第5章。JS:.apply(null,arguments) - 爲什麼我的函數調用一次,而console.log調用很多次?
我想了解.apply函數。
JavaScript函數有一個應用方法。您將它傳遞給一個參數的數組(或類似數組的對象),然後它將使用這些參數調用函數。
給出的例子是:
function transparentWrapping(f) {
return function() {
return f.apply(null, arguments);
};
}
想出來我自己,我寫了這個:
function doIt(f) {
return function(arg) { return f.apply(null, arguments) };
}
doIt(console.log)("Hello there!","Hi!","Hello!!", "Testing");
輸出是:
Hello there! Hi! Hello!! Testing
但是,如果我爲我自己的功能調換console.log:
function logIt(arg) {
console.log(arg+"\r");
}
doIt(logIt)("Hello there!","Hi!","Hello!!", "Testing");
......它似乎只爲第一個參數調用logIt()函數。輸出是:
Hello there!
爲什麼console.log調用每個參數,但logIt只爲第一個?