静的スコープ
static scope
字句解析した時点でスコープが決まる
関数を定義した場所でスコープが決まる
最近の言語は静的スコープを採用しているものが多い
静的スコープにおける名前束縛のことを静的束縛という ぐぐったらPHPの遅延静的束縛とか出てくるmrsekut.icon 例
関数bは関数aの中で定義されているので、xの値を見ることができる
code:example
var x = 100;
var a = () => {
var x = 0;
return () => x;
};
var b = a();
x; // 100
b(); // 0
例2
code:example
var x = 100;
var b = () => x;
var a = () => {
var x = 0;
return b();
};
x; // 100
a(); // 100
code:example
A {
var x;
}
B {
var x; // A内のxとは別物のx②
C {
var y; // Cの内側からしか見えない
// ここでは②のxは見える
}
}
JSではスコープ内に該当の変数がなかった場合、外側のスコープを探しに行く
js
言語例
JavaScript
Python
Java
Ruby
だいたいこれ
関連