ホームページ >ウェブフロントエンド >jsチュートリアル >関数の宣言と式は JavaScript の実行順序にどのように影響しますか?
JavaScript 関数の宣言と評価順序
JavaScript 関数を使用する場合、関数の宣言と式の区別とその影響を理解することが重要です。執行命令について。これは、4 つの例を調べることで説明できます。
// 1 (function() { setTimeout(someFunction1, 10); var someFunction1 = function() { alert('here1'); }; })(); // 2 (function() { setTimeout(someFunction2, 10); function someFunction2() { alert('here2'); } })(); // 3 (function() { setTimeout(function() { someFunction3(); }, 10); var someFunction3 = function() { alert('here3'); }; })(); // 4 (function() { setTimeout(function() { someFunction4(); }, 10); function someFunction4() { alert('here4'); } })();
最初の例は、コンパイルと実行の順序が原因で機能しません。 JavaScript では、コードはコンパイルと実行の 2 つのフェーズでコンパイルされます。
フェーズ 1: コンパイル
コンパイル中に、変数が作成されます。例 1 では、setTimeout 呼び出しの後に someFunction1 変数が宣言されています。したがって、コンパイラーが setTimeout 引数で someFunction1 を検出した場合、変数を見つけることができません。
フェーズ 2: 実行
実行中に、インタープリターは someFunction1 の値を渡します。タイムアウトを設定します。 someFunction1 変数がまだ未定義であるため、インタプリタは関数の実行に失敗します。
対照的に、例 2、3、および 4 はすべて機能します。これは、関数宣言が setTimeout 呼び出しの前に定義されているため (例 2)、または、匿名関数が setTimeout に渡されるか (例 3)、宣言された関数への参照が使用されます (例 4)。
関数宣言と関数式
関数宣言と式の違いを理解することが重要です。関数宣言 (例 2 など) はコンパイル中に解析され、関数式 (例 1 および 3 など) は実行中に評価されます。この違いは、変数へのアクセスとコードの実行順序に影響を与える可能性があります。
以上が関数の宣言と式は JavaScript の実行順序にどのように影響しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。