静的スコープ
まず、一般的なローカル変数のスコープについて考える。
ブロックなどの構造を持つプログラミング言語では、あるブロックの内側のローカル変数は、そのブロックの外側からは「見えない」というものが多い。ただし、以前のJavaScript (ECMAScript) のように、サポートされるのは関数内ローカルのみで、ブロックローカルというスコープは無いものもある。
疑似コードによる例を挙げる。
ブロックAで定義されている変数xとブロックBで定義されている変数xは同じ識別子を持つが、ブロックが異なるため実体は別である。また、ブロックBからは、さらに内側のブロックCで定義されている変数を参照することはできない。逆にブロックCからはブロックBで定義されている変数xとブロックCで定義されている変数yが参照可能である。
以上のようなスコープはローカル変数として一般的なものである。