JavaScript ES 6 var VS letの違い

1594 ワード

ECMAScript 6すなわちES 6にlet文が導入されています.
The let statement declares a block scope local variable、optionlyinitializing it to a value.let文は、局所変数を宣言するために使用され、作用領域はblock scopeであり、声明の中で初期化されます.
var VS letの違い
違いは宣言変数のスコープにあります.
  • var文で宣言された変数は、機能領域がFunction Scopeメソッド作用領域
  • である.
  • let文で宣言された変数は、スコックスコープのスコープスコープの役割領域であり、Function Scopeの範囲より小さいかもしれません.
  • と同じかもしれません.
  • どのblockの外部でvarまたはletを使用すれば、宣言の変数はすべて大域変数、すなわちGlobal Scope
  • である.
  • letステートメントの変数は、ステートメントの前にアクセスできません.そうでなければReferenceError
  • をスローします.
    Global Scropeグローバルスコープletステートメントの変数は、windowオブジェクトを介してアクセスできません.
    var foo1 = 1;
    let foo2 = 2; // foo1   foo2         Global Scope
    
    console.log(foo1); // 1
    console.log(foo2); // 2
    
    console.log(window.foo1); // 1
    console.log(window.foo2); // undefined
    
    Function Scopeメソッドスコープ
    function f() {
      var foo1 = 1;
      let foo2 = 2; // foo1   foo2         Function Scope
      
      console.log(foo1); // 1
      console.log(foo2); // 2
    }
    
    f();
    
    ブロック作用領域
    以下のコードには、varletステートメント変数の違いが見られます.
    function f() {
      var foo1 = 1; // Function Scope
      
      {
        let foo1 = 2; // Block Scope
        let foo2 = 3; // Block Scope
        
        console.log(foo1); // 2
        console.log(foo2); // 3
      }
      
      console.log(foo1); // 1
      console.log(foo2); // foo2 is not defined
    }
    
    f();
    
    let foo1 = 2; let foo2 = 3;var foo1 = 2; var foo2 = 3;に置き換えると、すべてFunction Scopeになる.
    引用:let