[JavaScript] Scope/Closure


Scope


JavaScriptのコード範囲

グローバルスキャン


:関数ではなく、{}の外にある領域
≪グローバル変数|Global Variable|oem_src≫:宣言された変数をグローバル・スキャンで使用する必要がない場合、副作用が発生します.
let name = "ogu";

function printName() {
  console.log(`Name : ${name}`);
}

//...
//...
//...

let name = "platypus"; // Uncaught SyntaxError: Identifier 'name' has already been declared

ゾーンスキャン

  • 関数スキャン
  • let name = "ogu";
    
    function printName() {
      let name = "platypus";
      console.log(`Name : ${name}`); // result : "Name : platypus"
    }
    printName();
    
    console.log(`Name : ${name}`); // result : "Name : ogu"
  • ブロックスキャン
  • {
      let name = "ogu";
      console.log(`Name : ${name}`); // result : "Name : ogu"
    }
    
    //...
    //...
    //...
    {
      let name = "platypus";
      console.log(`Name : ${name}`); // result : "Name : platypus"
    }
  • スキャンチェーン[画像ソース]2


  • Closure