IIFE を使用して私が見た 2 つの方法 (他にもあることはわかっています):
(function(){
console.log(this);
}).call(this);
(function(){
console.log(this);
})();
最初のものを使用する理由はあります.call(this)か?();関数内で同じコンテキストを生成しませんか?
IIFE を使用して私が見た 2 つの方法 (他にもあることはわかっています):
(function(){
console.log(this);
}).call(this);
(function(){
console.log(this);
})();
最初のものを使用する理由はあります.call(this)か?();関数内で同じコンテキストを生成しませんか?
これは、コードが実行される場所によって異なります。
.call(this)thisを渡したオブジェクトに明示的に設定します.call。を使用する場合にのみ、();に設定さthisれますwindow(またはundefined厳密モードでは to に設定されます)。
コードがグローバル スコープで実行される場合、それは同じになります。thisそうでない場合、が参照していないwindow(または である)場合は、異なる結果が得られますundefined。
例:
var obj = {
foo: function() {
(function(){
console.log(this); // this === obj
}).call(this); // this === obj
(function(){
console.log(this); // this === window
})();
}
};
obj.foo();