私はホイストの一般的なルールを知っていますが、変数と関数はコンパイル段階で吊り上げられます。したがって 次自己呼び出し機能でjavascriptを巻く
var foo = 'global';
が
var foo; //undefined
foo = 'global'; // declared
、としてコンパイルされますが、これは自己呼び出しである理由私は
var foo = 'global';
var myObject = {
foo: 'local',
func: function(){
console.log(this.foo); // local
(function(){
console.log(this.foo); // global
})();
}
}
myObject.func();
を理解することができません何であると書かれて何もMyObect内でグローバルfooを印刷する/ウィンドウのコンテキストを取る?
一般的に私が理解しようとしているのは、どこで吊り上げているのかです。
生命維持内側 'this'は' window'ですので。呼び出される実行コンテキストはグローバルコンテキストです。これは、 'obj.func()'のようなオブジェクトでは呼び出されないので、 'this'はデフォルトで' window'を参照するためです。 – Li357
自己呼び出し関数は、obj.func()が宣言されたときにのみ実行されるべきではありません。 – patz
@patz吊り上げることは何もありません。 * context *の理解はjsに適合しません... –