js中var和let的快速區別

清夢徐徐丶莫發表於2018-09-04

先看下面的幾個例子:

  1.

var a = 99;            // 全域性變數a
f();                   // f是函式,雖然定義在呼叫的後面,但是函式宣告會提升到作用域的頂部。 
console.log(a);        // a=>99,  此時是全域性變數的a
function f() {
  console.log(a);      // 當前的a變數是下面變數a宣告提升後,預設值undefined
  var a = 10;
  console.log(a);      // a => 10
}

// 輸出結果:
undefined
10
99

  2.

{ 
  var i = 9;
} 
console.log(i);  // 9

  3.

{ 
  let i = 9;     // i變數只在 花括號內有效
} 
console.log(i);  // Uncaught ReferenceError: i is not defined

  總結:在ES6中開始用let來定義塊級作用域變數,let沒有變數的提升,用let宣告的變數要求必須等let宣告語句執行之後,該變數才能使用不然會報Uncaught ReferenceError 錯誤,而且let變數不能進行重複宣告

 

 

             

相關文章