他は説明したundefined
。undefined
任意の値に再定義できるグローバル変数のようなものです。この手法は、誰かがundefined = 10
どこかで書いた場合にすべての未定義のチェックが壊れることを防ぐためのものです。渡されない引数undefined
は、変数の 値に関係なく実数であることが保証されていますundefined
。
ウィンドウを渡す理由は、次の例で説明できます。
(function() {
console.log(window);
...
...
...
var window = 10;
})();
コンソールは何をログに記録しますか?window
オブジェクトの価値は正しいですか?違う!10?違う!記録しundefined
ます。JavaScriptインタープリター(またはJITコンパイラー)は、このように書き換えます-
(function() {
var window; //and every other var in this function
console.log(window);
...
...
...
window = 10;
})();
ただし、window
変数を引数として取得した場合、varはないため、驚きはありません。
jQueryが実行しているかどうかはわかりませんがwindow
、何らかの理由で関数のローカル変数を再定義している場合は、グローバルスコープから借用することをお勧めします。