JavaScript では、匿名関数を定義し、同じ行ですぐに呼び出すことができます。この手法は、クロージャの作成やコードのモジュール化によく使用されます。ただし、なぜ両方の手順を同じ行で実行する必要があるのか混乱する可能性があります。
JavaScript 関数は、関数式と関数宣言の 2 つの方法を使用して定義できます。 function sum(a, b) { ... } のような関数宣言は、グローバル スコープの一部である名前付き関数を作成します。一方、関数式は、通常、変数に格納されるか、コールバックとして使用される匿名関数を作成します。
匿名関数を実行するには、それをラップする必要があります。括弧、例: (function() { ... })()。この構文を使用すると、関数を変数に割り当てることなく、すぐに呼び出すことができます。
匿名関数を別の行で定義して呼び出そうとすると、 get an error:
( function (msg){ alert(msg); } // missing semicolon ); // semicolon ends the statement ('SO');
これは、関数定義の後のセミコロンでステートメントが終了し、次の行がそのまま残されるためです。独立した括弧式。これを修正するには、セミコロンを削除し、同じ行で関数を呼び出す必要があります。
(function (msg){ alert(msg); })('SO');
この要件の理由は、JavaScript のセミコロン挿入動作に起因します。ステートメントの末尾にセミコロンがない場合、JavaScript によって自動的にセミコロンが挿入されます。上の例では、関数定義の後のセミコロンを削除すると、JavaScript は行の最後にセミコロンを挿入し、事実上関数ステートメントを終了します。
の即時呼び出し匿名関数はクロージャを作成する役割も果たします。クロージャは、親関数の実行が終了した後でも、親スコープの変数にアクセスできる関数です。上の例では、匿名関数は msg 変数にアクセスできますが、これは通常、関数本体の終了後にスコープ外になります。
同じ行で匿名関数を呼び出すことは次のとおりです。クロージャとモジュールコードの作成を可能にする技術。一般的なエラーを回避するには、関数式と宣言の違い、および JavaScript のセミコロン挿入動作を理解することが重要です。
以上がJavaScript ではなぜ即時呼び出し関数式 (IIFE) を 1 行で定義して呼び出す必要があるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。