JavaScriptの静的作用域(ワードスコープともいう)
837 ワード
静的作用域とは、動的作用域に対して、変数の作用域はコードコンパイル段階で決定され、また語法作用域とも呼ばれ、動的作用域言語の変数作用域はコード実行段階で決定されることを意味する.
JavaScript静的作用領域を理解する鍵は、変数の作用領域を理解することであり、変数を呼び出すときの位置によって決定されるのではなく、変数を使用するソースコード位置によって決定されることである.
JavaScript静的作用領域を理解する鍵は、変数の作用領域を理解することであり、変数を呼び出すときの位置によって決定されるのではなく、変数を使用するソースコード位置によって決定されることである.
var v="out";
function outside(){
var v="in";
return inside();
}
function inside(){
return v;
}
outside();
比較var v="out";
function outside(){
var v="in";
function inside(){
return v;
}
return inside();
}
outside();
第1のセグメントコードの実行結果は「out」であり、第2のセグメントコードの実行結果は「in」である.違いの鍵はinside()関数の定義位置にあり、第一段コードinside()関数はoutside()関数の外層に定義されているので、関数内で使用されるv変数の作用領域チェーンはinside()内と最上階だけを含んでいます.したがって、その値は「out」であり、第二段コードのinside()関数はoutside()関数の内部に定義されています.このとき、この関数が使用するv変数のスコープにはinside()関数内部、outside()関数内部、およびトップレベルが含まれており、順番に検索されるので、vの値はoutside()内部の割当値の「in」となります.