ES6引入的第三個聲明類關鍵詞與let類似:const。
看一下用法:
const c1 = 1; const c2 = {}; const c3 = [];
Object.getOwnPropertyDescriptor(window,"c1") //Object {value: 1, writable: false, enumerable: true, configurable: false}
上面的例子說,不能在對c2進行賦值,但是可以改變c2的內容,因為c2是個對象,看例子:
c2.p1 = 1;
同樣,也可以往c3中添加元素,因為c3是個數組。
const聲明常量還有個問題,就是聲明和初始化必須在一起,聲明了就要初始化:
'use strict'; const c4;//Uncaught SyntaxError: Unexpected token ;
去掉分號仍然會報錯,我們這裡不討論非strict mode下的情況,有興趣的可以自己去試。
const聲明的變量與let聲明的變量類似,它們的不同之處在於,const聲明的變量只可以在聲明時賦值,不可隨意修改,否則會導致SyntaxError(語法錯誤)。
const MAX_CAT_SIZE_KG = 3000; // 正確 MAX_CAT_SIZE_KG = 5000; // 語法錯誤(SyntaxError) MAX_CAT_SIZE_KG++; // 雖然換了一種方式,但仍然會導致語法錯誤
當然,規范設計的足夠明智,用const聲明變量後必須要賦值,否則也拋出語法錯誤。
const theFairest; // 依然是語法錯誤,你這個倒霉蛋