天天看點

JS中變量和常量的定義

var隻能聲明一個變量,這個變量可以儲存任何資料類型的值

ES6之前并沒有定義聲明常量的方式,ES6标準引入的第三個聲明類關鍵詞與let類似:const,

使用const定義常量後,常量無法改變

1 const a=5;
2 a=2;
3 alert(a);

4 VM204:2 Uncaught TypeError: Assignment to constant variable.
5     at <anonymous>:2:2      

看一下用法:

?

1 2 3

const c1 = 1;

const c2 = {};

const c3 = [];

?

1 2

Object.getOwnPropertyDescriptor(window,

"c1"

)

//Object {value: 1, writable: false, enumerable: true, configurable: false}

上面的例子說,不能在對c2進行指派,但是可以改變c2的内容,因為c2是個對象,看例子:

?

1

c2.p1 = 1;

同樣,也可以往c3中添加元素,因為c3是個數組。

const聲明常量還有個問題,就是聲明和初始化必須在一起,聲明了就要初始化:

?

1 2 3

'use strict'

;

const c4;

//Uncaught SyntaxError: Unexpected token ;

去掉分号仍然會報錯,我們這裡不讨論非strict mode下的情況,有興趣的可以自己去試。

const聲明的變量與let聲明的變量類似,它們的不同之處在于,const聲明的變量隻可以在聲明時指派,不可随意修改,否則會導緻SyntaxError(文法錯誤)。

?

1 2 3 4

const MAX_CAT_SIZE_KG = 3000;

// 正确

MAX_CAT_SIZE_KG = 5000;

// 文法錯誤(SyntaxError)

MAX_CAT_SIZE_KG++;

// 雖然換了一種方式,但仍然會導緻文法錯誤

當然,規範設計的足夠明智,用const聲明變量後必須要指派,否則也抛出文法錯誤。

ES6中還新增了let關鍵字來聲明變量,作用與var相似,但其所聲明的變量隻在聲明所在塊内有效

繼續閱讀