JavaScriptにおける関数のレキシカル環境
関数からアクセス可能なすべての外部変数は、 その関数のレキシカル環境 (LexicalEnvironment)と呼ばれます。
次の例では、関数は二つの変数にアクセスできます:
num1とnum2、これらが
私たちの関数のレキシカル環境を構成します:
let num1 = 1;
let num2 = 2;
function func() {
// 関数は変数num1とnum2を知っている
}
レキシカル環境自体は、私たちの関数に紐づけられた JavaScriptの内部オブジェクトのようなものです。 この場合、次のように表現できます:
{num1: 1, num2: 2}
レキシカル環境内の任意の変数の値は、 常にその変数の現在の値と等しくなります:
let num1 = 1; // 環境 {num1: 1}
let num2 = 2; // 環境 {num1: 1, num2: 2}
// 変数num1を変更します:
num1 = 123; // 環境 {num1: 123, num2: 2}
function func() {
}
関数内で任意の変数にアクセスしようとすると、 その変数は最初に関数のローカル変数の中から探され、 そのような変数がそこにない場合、 関数のレキシカル環境の中から探されます。