1. 程式人生 > >JS let關鍵字

JS let關鍵字

let,用來宣告變數。它的用法類似於var,但是所宣告的變數,只在let命令所在的程式碼塊內有效。
與var 區別
let不像var那樣會發生“變數提升”現象

 
  1. console.log(foo); // 輸出undefined

  2. console.log(bar); // 報錯ReferenceError

  3.  
  4. var foo = 2;

  5. let bar = 2;



暫時性死區(temporal dead zone,簡稱TDZ)

 
  1. var tmp = 123;

  2. if (true) {

  3. tmp = 'abc'; // ReferenceError

  4. let tmp;

  5. }

上面程式碼中,存在全域性變數tmp,但是塊級作用域內let又聲明瞭一個區域性變數tmp,導致後者繫結這個塊級作用域,所以在let宣告變數前,對tmp賦值會報錯。
ES6明確規定,如果區塊中存在let和const,這個區塊對這些命令宣告的變數,從一開始就形成了封閉作用域。凡是在宣告之前就使用這些變數,就會報錯。


let不允許在相同作用域內,重複宣告同一個變數。