JavaScript - Scope

5510 ワード

Scope


各識別子には有効な範囲があり、他のコードは、宣言された位置に基づいて識別子自体を参照できます.
Scopeがない場合、プログラム全体で1つの変数しか使用できません.

識別識別子


JAvascriptエンジンは、スキャンチェーンを介して親スキャンに移動し、識別子決定と呼ばれる同じ名前の2つの変数でどの変数を参照するかを決定します.

n.関数


関数のパラメータは、関数内でのみ参照できます.
function fn(x,y){
  console.log(x, y);
  return x + y;
}

fn(1,5);

console.log(x, y); // ReferenceError
}

へんすう


変数は、宣言された場所によって有効範囲を決定します.
let num1 = 1;

if (true){
  let num2 = 2;
  
  if (true){
    let num3 = 3;
  }
}

グローバルスキャン


コードの一番外側です.
グローバルスキャンで宣言されたすべての関数と変数は、どこでも参照できます.

ゾーンスキャン


関数体の内部.
ゾーンスキャンで宣言されたすべての関数と変数は、ゾーンスキャンとサブゾーンスキャンで参照できます.

でんしけんびきょう


関数がどこで定義され、関数の位相が決定されます.
JavaScriptを含むほとんどの言語で使用されるスキャン方法
let x = 1;

function test1(){
  let x = 2;
  test2(); // 1
}

function test2(){
  console.log(x);
}

ダイナミックスキャン


関数は、関数の位相を決定するためにどこから調整されますか.
let x = 1;

function test1(){
  let x = 2;
  test2(); // 2
}

function test2(){
  console.log(x);
}