静的スコープ
from スコープ
static scope
レキシカルスコープとも言う
lexical 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ではスコープ内に該当の変数がなかった場合、外側のスコープを探しに行く
https://ja.wikipedia.org/wiki/静的スコープ
http://nmi.jp/2022-08-16-Let-Initializer-In-For-Loop
js
言語例
JavaScript
Python
Java
Ruby
だいたいこれ
関連
スコープチェーン