const和let一樣,也是ES6版本中引入的新關(guān)鍵字,下面我們就通過(guò)例子來(lái)簡(jiǎn)單掌握J(rèn)avaScript中const關(guān)鍵詞聲明常量與變量的用法
ES6引入的第三個(gè)聲明類關(guān)鍵詞與let類似:const。
看一下用法:
const c1 = 1;
const c2 = {};
const c3 = [];
Object.getOwnPropertyDescriptor(window,"c1")
//Object {value: 1, writable: false, enumerable: true, configurable: false}
上面的例子說(shuō),不能在對(duì)c2進(jìn)行賦值,但是可以改變c2的內(nèi)容,因?yàn)閏2是個(gè)對(duì)象,看例子:
c2.p1 = 1;
同樣,也可以往c3中添加元素,因?yàn)閏3是個(gè)數(shù)組。
const聲明常量還有個(gè)問(wèn)題,就是聲明和初始化必須在一起,聲明了就要初始化:
'use strict';
const c4;//Uncaught SyntaxError: Unexpected token ;
去掉分號(hào)仍然會(huì)報(bào)錯(cuò),我們這里不討論非strict mode下的情況,有興趣的可以自己去試。
const聲明的變量與let聲明的變量類似,它們的不同之處在于,const聲明的變量只可以在聲明時(shí)賦值,不可隨意修改,否則會(huì)導(dǎo)致SyntaxError(語(yǔ)法錯(cuò)誤)。
const MAX_CAT_SIZE_KG = 3000; // 正確
MAX_CAT_SIZE_KG = 5000; // 語(yǔ)法錯(cuò)誤(SyntaxError)
MAX_CAT_SIZE_KG++; // 雖然換了一種方式,但仍然會(huì)導(dǎo)致語(yǔ)法錯(cuò)誤
當(dāng)然,規(guī)范設(shè)計(jì)的足夠明智,用const聲明變量后必須要賦值,否則也拋出語(yǔ)法錯(cuò)誤。
const theFairest; // 依然是語(yǔ)法錯(cuò)誤,你這個(gè)倒霉蛋