在ES6中使用 const 來聲明常量
首先什么是常量,常量就是相對於變量而言不可變動的量,111、'qqq' 這樣都是常量。
const nub = 1; console.log(nub); //1
在使用 const 的時候有以下幾點需要注意:
1、使用const聲明常量一定要賦初始值,否則會產生語法錯誤
const a = 1; const b; //SyntaxError: Missing initializer in const declaration
2、常量的值不能修改
正是因為 const 聲明的變量不可以改變值,所以只要聲明變量就必須進行初始化,不可以等聲明之后再另外進行賦值
const NUMBER = 'jojo'; NUMBER; NUMBER = 'hell'; //TypeError: Assignment to constant variable.
3、const 有塊級作用域
和 let 一樣const也有塊級作用域,只在聲明所在的塊級作用域之內有效
{ const age = 17; } age; //ReferenceError: age is not defined
並且使用 const 聲明的常量也不會提升,存在暫時性死區,只能在聲明之后調用
console.log(age); const age = 17; //ReferenceError: Cannot access 'age' before initialization
4、對於數組和對象的元素修改,不算做對常量的修改,不會報錯
對於復合類型的變量,變量名不指向數據,而是指向數據所在的地址。const 明亮只是保證變量名指向的地址不變,但是存儲在這個地址里面的數據則有可能發生變化。
const tim = [1,2]; tim.push(3); console.log(tim); //[1, 2, 3]
上面這段代碼中,常量 tim作為一個數組,是可以寫入的並且不會報錯,因為指向的地址並沒有發生改變。但是如果將另外一個數組賦值給 tim 則會報錯,因為這時候 tim指向的內存地址發生了改變。
參考資料:https://www.w3cschool.cn/ecmascript/ueqp1q5g.html
注意:聲明數組或是對象的時候,使用 const 是比較穩妥的,可以避免常量變動錯誤。