エンクロージャ

1730 ワード

1.キャビネット(Closer)
関数が宣言されたときの周囲環境を覚えることです.
var x = 1;

function foo() {
	var x = 10; 
  	bar();
}

function bar() {
	console.log(x);
}

foo();
bar関数が実行される位置または時点はfoo関数内部でfoo関数が呼び出されたときに実行されます.ただし、関数が宣言されるとscopeが形成されるため、bar関数の親scopeはグローバルオブジェクトになります.だから、bar
関数内部のx値は,走査チェーンに基づいて位相走査で見つけ,1を出力する.
📌 スキャンチェーンは、コードの有効範囲内の変数を定義するオブジェクトのリストです.
JavaScriptで変数値を検索しようとすると、scopeチェーンで変数が検索されます.
2.実行コンテキスト
関数が実行されるたびに現在実行されている関数の情報を収集するオブジェクト.