2016-08-28 10 views
4

Mozilla's Developer Network状態:Javascript - Array.prototype.forEach() - は3つの引数が必要ですか?

  • 要素値

  • 要素インデックス

  • を横断している配列:

    【のforeachコールバックは】3つの引数で呼び出され

しかし、これは私には少し不明です。これら3つの議論はすべて必要ですか?私が書いている特定のコールバックは、それらの値のどれも使用しません。とにかく宣言していますか、それとも私はそれらを安全にスキップできますか?

答えて

5

安全にスキップすることができます。

あなたは決して関数の引数を宣言してはいけません。コールバックを受け取る準備ができていなくても、値はコールバックに渡されることがよくあります。あなたの関数がそれらの引数を利用する必要がある場合にのみ重要です。

例としては、イベントオブジェクト - 発生したことに関するレポート - が常に最初の引数として渡されるイベントコールバックがあります。

foo.addEventListener('click', function(evt) { 
    //if I never reference the evt object, I need not define the evt argument 
}, false); 
+1

としてご利用いただけます。例えば。 [express library]のエラー処理コールバック(http://expressjs.com/en/guide/error-handling.html)。 –

+0

これは当てはまりますが、ネイティブJavaScriptの規約の範囲外です。これには、この動作に相当するものはありません。 vanilla JSの場合、コールバック引数は使用方法に応じて定義することができます。 – Utkanos

1

ほとんどの言語とは異なり、javascriptは関数が呼び出される引数の数をチェックしません。 javascriptのコールバックは関数だけであるため、これはコールバックに対しても当てはまります。

function a(arg1){ 
    console.log(arg1); 
} 

機能a

a(); // prints undefined 
a(1); // prints 1 
a(1,2); // prints 1 

によって、または任意の数の引数で起動することができます。

関数が定義よりも引数の数が少なくても呼び出された場合、欠落しているパラメータはundefinedに設定されます。これはほとんどのコールバックのための事実ですが、引数の数、コールバック関数の定義に基づいて、コールバックのタイプを決定するライブラリがあります

関数が呼び出されるとすべての引数はローカル変数arguments

関連する問題