es6-let與const

littlebirdflying發表於2018-09-15

作用域的概念

es5 兩個作用域:全域性作用域、函式作用域

es6 增加了塊作用域

let

  • let var 作用域不同,let 只在塊級作用域有效
  • 使用 es6 強制開啟嚴格模式,未宣告會報錯;es5 中使用 "use strict"
  • let 不能重複定義變數
function test(){
  for(let i=1;i<3;i++){ // 塊級作用域
    console.log(i);
  }
  console.log(i); // 報錯:Uncaught ReferenceError: i is not defined
}()
複製程式碼
function test1(){
  for(var i=1;i<3;i++){ // 函式作用域
    console.log(i);
  }
  console.log(i); // 1 2 3 
}()
複製程式碼

const

  • 宣告常量,不能修改。
  • const 也有塊級作用域。
  • 宣告時必須賦值。
  • 數值不允許修改;引用型別賦值,存的是指標,指標不能變,但是引用型別可以變。
function last(){
  const PI=3.1415926; // const 宣告常量
  const k={ // const 宣告物件,指標沒變,但可以改變物件內容
    a:1
  }
  k.b=3;
  console.log(PI,k);
}()
複製程式碼