### const命令
* * * * *
> const聲明一個只讀的常量。一旦聲明,常量的值就不能改變。試圖改變常量時javascript運行環境會報錯,如:
~~~
const PI = 3.1415;
console.log(PI) // 3.1415
PI = 3;
// TypeError: Assignment to constant variable.
~~~
> const聲明的變量不得改變值,這意味著,const一旦聲明變量,就必須立即初始化,不能留到以后賦值。
>const的作用域與let命令相同:只在聲明所在的塊級作用域內有效
>const命令聲明的常量也不存在變量提升,也與let一樣不可重復聲明。
>對于復合類型的變量,變量名不指向數據,而是指向數據所在的地址。const命令只是保證變量名指向的地址不變,并不保證該地址的數據不變,所以將一個對象聲明為常量必須非常小心。
~~~
const foo = {};
foo.prop = 123;
foo.prop
// 123
foo = {}; // TypeError: "foo" is read-only
~~~
> 上面代碼中,常量foo儲存的是一個地址,這個地址指向一個對象。不可變的只是這個地址,即不能把foo指向另一個地址,但對象本身是可變的,所以依然可以為其添加新屬性。
ES5只有兩種聲明變量的方法:var命令和function命令。ES6除了添加let和const命令,后面章節還會提到,另外兩種聲明變量的方法:import命令和class命令。所以,ES6一共有6種聲明變量的方法。