jsの静的作用領域
1548 ワード
スコープは変数の検索方法を定めています.つまり、コードの変数へのアクセス権限を決定します.
jsは語法の作用域、つまり静的作用域を採用しています.定義段階で決められたのです.実行段階で決めたのではありません.
jsは語法の作用域、つまり静的作用域を採用しています.定義段階で決められたのです.実行段階で決めたのではありません.
var value = 1;
function foo() {
console.log(value);
}
function bar() {
var value = 2;
foo();
}
bar();
静的な作用領域なので、barの内部でfooを呼び出すと、foo関数がアクセスできるvalue値はグローバルな作用領域のvalueであるため、最後に1を出力します.つまり、foo関数がアクセスできる変数は定義時に決定されています.fooがいつ呼び出しられますか?どこで呼び出しても大丈夫です.var scope = "global scope";
function checkscope(){
var scope = "local scope";
function f(){
return scope;
}
return f();
}
checkscope();
ここも、checkscopeでfを実行しました.f関数がアクセスできるscopeは「local scope」です.だから最後に戻ったのも「local scope」です.