私は第5章を通して素晴らしいEloquent Javascriptを読んでいます。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
、I場合私自身の機能のためにconsole.logを交換:
function logIt(arg) {
console.log(arg+"\r");
}
doIt(logIt)("Hello there!","Hi!","Hello!!", "Testing");
... logIt()関数は、最初の引数に対してのみ呼び出されるようです。出力は次のとおりです。
Hello there!
はなぜ各引数のために呼ばCONSOLE.LOGされているが、ロジットのみ最初のために?