スコープとスコープチェーンは何ですか?Javascript基礎学習ノート


JSにおけるグローバルスコープと関数スコープを簡単に紹介し、スコープの実行メカニズムを理解することに重点を置いている.
スコープ
  • グローバルスコープ(Global scope)グローバルスコープ内で定義された変数と関数はどこでも利用できます.
  • 関数スコープ関数スコープ内で定義された変数と関数は、関数内でのみ利用可能です.
  • スコープチェーン
  • 実行コンテキスト(Execution Contect)JSでは、すべてのコードがコンテキスト/実行環境で実行され、関数の呼び出しごとに新しい実行環境が作成されます.実行環境には、自身の変数環境、thisオブジェクト、およびそれらの外部層に対する環境の参照が含まれている.グローバルスコープには外層実行環境が存在しない.
  • スコープの動作方式
  • によって参照される変数(定義されていない)は、まず自身が実行する環境で検索される.
  • が見つからなかったら、外部実行環境を検索します.
  • がまだ見つかっていない場合は、グローバルスコープまで上の階の実行環境を検索する.
  • グローバルスコープ内にまだ見つかっていない場合、この変数はundefined
  • である.
    
            var x = 2;
            function A() {
                var x = 5;
                B();
            }
    
            function B() {
                console.log(x);
            }
            A();  // The result is 2, not 5.
        
        // Even though 'B' is called within 'A', 
        // 'B' is defined within **Global**, 
        // therefore, the **Outer Reference** of 'B' is **Global** instead of 'A'