ES6——let與const
阿新 • • 發佈:2020-07-24
-
let (定義變數)
-
程式碼塊內有效
{ let a = 1 console.log(a) //1 } console.log(a) //ReferenceError: a is not defined
-
不能重複宣告
-
不存在變數提升
-
-
const (定義常量)
- 一旦宣告必須初始化
- 宣告之後不允許改變
const如何做到宣告初始化後不允許改變的?
保證變數指向的記憶體地址所儲存的資料不允許改動,對於簡單型別,值就儲存在變數指向的那個記憶體地址,因此 const 宣告的簡單型別的變數等同於那個常量。而複雜型別、變數指向的記憶體地址其實是儲存了一個指向實際資料的指標,所以 const 只能保證指標是固定的,至於指標指向的資料結構變不變就無法控制了,所以使用 const 聲明覆雜型別物件時要慎重
-
暫時性死區
程式碼塊內如果存在 let 或則 const ,程式碼塊會對這些命令的變數從塊的開始形成一個封閉作用域。在宣告變數 PI 之前使用它會報錯
var PI = 'a' if(true){ console.log(PI)//ReferenceError: a is not defined const PI = '3.14' }