Javascriptスコープ

858 ワード

スコープは何ですか?
スコープとは、変数がコードで使用できる範囲のことです.
Javascriptのスコープ
  • varで定義された変数
  • 一つの関数で変数をvarで宣言すると、この変数のスコープはこの関数内になります.
    つまりこの変数はこの関数だけで使用できます.関数の外部では使用できません.
    同様に、この関数で定義された関数もこの変数を使用することができます.
  • varで定義されていない変数
  • 関数内でvarで定義されていない変数のスコープはこの関数に限定されません.
    Javascriptは、この変数が初めて定義される場所を見つけるまで、スコープチェーンを追跡します.
    もしwindowの作用域まで遡っても見つからないなら、この変数は大域的な作用域に与えられます.
    関数のスコープ例
    関数内で関数外変数にアクセスできます.
    この関数はこの変数のスコープ内にあるからです.
    var message = 'hello';
    
    var sayHello = function() {
      console.log(message);
    }
    
    sayHello(); //logs 'hello'
    
    console.log(message); //logs 'hello'
    
    関数外では関数内の変数にアクセスできません.
    この変数のスコープは関数内にあるからです.
    var sayHello = function(){
      var message = 'goodbye';
      console.log(message)
    }
    
    sayHello(); //logs 'goodbye'
    
    console.log(message); // error