ECMAScript 6 新特性之-塊級作用域 let

最近更新時間 2020-01-10 13:33:29

let 語句聲明一個塊級作用域的本地變量,並且可選的將其初始化為一個值。

let 聲明的變量只在其聲明的塊或子塊中可用,這一點,與 var 相似。二者之間最主要的區別在於 var 聲明的變量的作用域是整個封閉函數。

//ECMAScript 6 | ES6

function varTest() {
  var x = 1;
  {
    var x = 2;  // 同樣的變量!
    console.log(x);  // 2
  }
  console.log(x);  // 2
}

function letTest() {
  let x = 1;
  {
    let x = 2;  // 不同的變量
    console.log(x);  // 2
  }
  console.log(x);  // 1
}

var x = 'global';
let y = 'global';
console.log(this.x); // "global"
console.log(this.y); // undefined

在同一個函數或塊作用域中重複聲明同一個變量會引起 SyntaxError。

if (x) {
  let foo;
  let foo; // SyntaxError thrown.
}

let x = 1;
switch(x) {
  case 0:
    let foo;
    break;
    
  case 1:
    let foo; // SyntaxError for redeclaration.
    break;
}
rss_feed