私が理解しているように、変数が定義されると、それは。を介して「最も近い」ローカルスコープにアタッチされますthis
。
ローカルにスコープが設定されていない場合、最も近いスコープはになりwindow
ます。
ただし、厳密モードでは、グローバルスコープの誤用を制限するように設計されたECMAscript 5仕様の一部としてwindow
、ローカルスコープがではなく未定義に設定されます。
jQueryプラグインを作成するための即時呼び出し関数式パターンと厳密モードの使用
;( function( $, window ){
"use strict";
var myScope = this;
var myVar = 1;
var myFunction = function(){
console.log( myScope, myVar );
}
$.myFunc = myFunction;
})( jQuery, window );
ローカルスコープ(コンテキスト)は(関数呼び出しを介して)作成されないため、未定義に設定されます。
ローカルスコープが未定義で未定義の場合window.myVar
、変数のスコープは何myVar
ですか?また、どのようにアクセスしますか?