3

Javascriptのこの構文は正確には何ですか? 私はそれが頻繁に使用されている(または悪用されている?)のを見ます:

(function(){})();

無名関数を作成して実行することがわかりました。しかし、なぜそのようにしなければならないのか理解できません。それはより読みやすいフォームと同等ではありませんか:

 function initSomething() {}
 initSomething();

編集: Javascript のイディオムを理解するのに役立つ素晴らしい回答をありがとう。

4

6 に答える 6

2

これはすぐに呼び出される関数式です

(function(){
  /* code */ 
}());

ウィキペディアが分かりやすいので引用。

すぐに呼び出される関数式 (または IIFE、「あいまい」と発音) は、JavaScript の関数スコープを使用してレキシカル スコープを生成する JavaScript 設計パターンです。すぐに呼び出される関数式を使用して、ブロック内からの変数の巻き上げを回避し、グローバル環境の汚染から保護し、関数内で定義された変数のプライバシーを保持しながら、同時にメソッドへのパブリック アクセスを許可できます。

詳しい説明はこちらをご覧ください。

無名関数を作成して実行することがわかりました。しかし、なぜそのようにしなければならないのか理解できません。それはより読みやすいフォームと同等ではありませんか:

function initSomething() {}
initSomething();

initSomethingまだ参照できるため、匿名ではないため、同じではありません。

于 2013-07-16T17:12:30.050 に答える