1. ホーム
  2. javascript

[解決済み] このJavaScript/jQueryの構文はどのように動作しますか: (function( window, undefined ) { })(window)?

2022-04-26 13:26:43

質問

のボンネットを覗いたことがありますか? jQuery 1.4 のソースコードを見て、それが以下のようにカプセル化されていることに気づきました。

(function( window, undefined ) {

  //All the JQuery code here 
  ...

})(window);

の記事を読みました。 JavaScriptの名前空間 というものと、もう一つ"というものがあります。 重要な親子 だから、ここで何が起こっているのか、ある程度はわかるんです。

でも、この特殊な構文は初めて見ました。 それは何ですか? undefined を行うのですか?そしてなぜ window を通過させ、最後に再び登場させる必要があるのでしょうか?

どのように解決するのですか?

undefinedは通常の変数であり、以下のように簡単に変更することができます。 undefined = "new value"; . そこでjQueryは、本当に未定義のローカル変数 "undefined"を作成します。

window 変数は、パフォーマンス上の理由からローカルに作られています。なぜなら、JavaScript が変数を検索するとき、まず変数名を見つけるまでローカル変数を調べます。見つからなければ、次のスコープなどを経由して、グローバル変数にたどり着くまで、JavaScriptはフィルタリングを行います。そのため、window変数がローカル変数になれば、JavaScriptはより速くそれを探すことができる。 さらに詳しい情報はこちら。 JavaScriptを高速化する - ニコラス・C・ザカス