変数宣言と役割ドメイン規則

2383 ワード

プログラミングでは、変数の範囲によって、プログラムで使用できる変数の位置と、変数にアクセスできる関数とオブジェクトが決まります.
通常、変数はローカル範囲またはグローバル範囲を持つことができます.コードブロック内で宣言された変数にはローカル役割ドメインがあり、同じブロック内の他のコードのみがアクセスできます.宣言されたブロックを終了すると、変数は範囲外になります.一方、グローバル変数は、現在実行中のスクリプト(またはプログラム)の任意の場所からアクセスでき、通常、プログラム全体のライフサイクルが継続します.

var


varキーワードを使用して変数を宣言する場合、役割ドメインは次のとおりです.
  • 任意の関数の外部で変数が宣言されている場合、変数はグローバル範囲で使用できます.
  • 関数内で変数が宣言されている場合、宣言ポイントから関数定義が終了するまで変数は使用できます.

  • いくつかの例を見てみましょう
    function varScope() {
       var a = 2;
       console.log(a); // outputs  2
    }
    
    console.log(a); // ReferenceError, a is not accessible outside the function.

    もう一つの例を見てみましょう.
    function varScope() {
       var a = 2;
       if(true) {
          var a =  "Jamie"; //change the value of a inside the "if" block
          console.log(a); //prints "Jamie"
       }
       console.log(a); //prints "Jamie": outside the "if" block, a still maintains the updated value 
       //a being function scoped, the (re-) declaration inside the if statement overwrote the previous value of a
       //when we assigned it a new value inside the conditional statement
    }
    console.log(a); // ReferenceError, again, a is not accessible outside the function.

    最後に、見てみましょう
    function forScope() {
       for(var i = 0; i < 5; i++) {
          console.log(i); //prints the values 0 through 4;
       }
       console.log(i); //prints 5;
    }

    何があったの?forループではi変数を宣言して初期化します.次にループ内部では,0から反復し,iの値が5未満であると,反復のたびにiに1を加算する.iの値が5に等しい場合、条件i<5はfalseとして評価され、サイクルが終了する.しかし,iはvarを用いて宣言されるため,その範囲は宣言された位置から関数の末尾に拡張される.したがって,ループ後でもiの最新値にアクセスでき,この場合は5である.

    let


    letキーワードを使用して宣言される変数には、3つの重要な特徴があります.
  • ブロック役割ドメインの
  • です
  • は、割り当ての前にアクセスできません.
  • は、同じ範囲内で
  • を再宣言できません.
    これが何を意味するかを理解するために、いくつかの例を使用します.
    function  letScope() {
       let a = 5;
    
       if  (true) {
          let a = "Jamie";  // using let creates a new a variable inside the "if" block
          console.log(a); //  prints "Jamie"
       }
    
       console.log(a); // 5,  outside the if block, the outer a shines through
    }
    console.log(a); // ReferenceError, a is not accessible outside the function.

    const


    constキーワード宣言を使用する変数にはletキーワード宣言を使用する変数のすべての特徴と重要な区別特徴があります.
  • は、
  • を再割り当てできません.
    const a = 2;
    a = 3 // Error, reassignment is not allowed