レキシカル
私はいつも「字面(じづら)の」と説明しています。
ソースを一通り見た範囲で決定できるのがレキシカルです。
実際に実行時にどこから呼ばれるか、どんなオブジェクトにぶら下がるかはダイナミックな問題です。
以下pediaの解説にある擬似コードの例です。
A {
var x;
}
B {
var x; // A内のxとは別物
var f;
C {
var y; // Cの内側からしか見えない
y = rand();
f = function(z) { return y + z; };
}
x = f(42);
}
この場合 C::y が外から見えないとする言語では、その範囲(いわゆるスコープ)をソースで確定可能です。
ソースで確定できるならレキシカルです。
一方、C::y が外からも見えるような言語では、誰が見るのか実行時でないとわかりません。という事は C::y のスコープは、それを見ようとしているナニかが C::y を外に見せるか、隠すかによって決まります。
実行時に決まるのでダイナミックです。
「レキシカルスコープ」で検索する機会があったんですが、みなさん色々混乱してらっしゃるようです。
特定のプログラミング言語のレキシカルスコープとダイナミックスコープの違いから類推する記事が多いです。
結果を見て機能を推測するのは、「だって実際に動いてるし」につながるのでとても危険です。やめましょう。