カプセル化された匿名関数の構文
JavaScript では、カプセル化された匿名関数は、関数を括弧で囲んですぐに実行することによって作成されます。
(function(){ // code here })();
この構文は、変数と関数を含むグローバル スコープ。
これが機能する理由: (function(){})();
関数宣言を括弧で囲むと、結果が評価されます。関数式として。関数式ではオプションの名前を使用できるため、この式は名前なしで実行できます。
これが機能しない理由: function(){}();
On一方、括弧がない場合、JavaScript はそれを関数宣言として解析します。関数宣言には名前識別子が必要ですが、この場合は名前識別子がありません。
関数宣言と式
関数式には名前を付けることも名前を付けないこともできますが、関数宣言には名前を付ける必要があります。
括弧とコンテキスト
括弧は次のことを示します囲まれたコードが式であることを示します。それが関数宣言であるか式であるかは、コンテキストによって異なります。関数宣言はグローバル スコープ内または別の関数の本体内で使用できますが、関数式は式内でのみ使用できます。
曖昧さの例
0, function foo() {} // Function Expression function foo() {} // Function Declaration
この例では、パーサーはコンテキストに基づいて、それが関数宣言であるか式であるかを判断します。式は式の中に使用できますが、宣言は特定の場所にのみ使用できます。
ブロック内の関数を避けるべき理由
ブロック内の関数は予期しない動作を引き起こす可能性があります変数のスコープの問題のため。例:
if (true) { function foo() { alert('true'); } } else { function foo() { alert('false!'); } } foo(); // true? false? why?
以上がJavaScript で括弧を使用するとカプセル化された匿名関数が作成されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。