
const 用來宣告一個或多個常數,宣告時必須進行初始化,且初始化後值不可再修改。
const定義常數與使用let 定義的變數相似:
兩者還有以下兩點區別:
const定義常數也有區塊級作用域
var a = 10;
const x = 'world';
if (a > 0){
const x = 'hello';
console.log(x); // 這裡輸出x 為hello
}
console.log(x); // 這裡輸出x 為world不能和它所在作用域內的其他變數或函式擁有相同的名稱
{
var x = 'world';
const x = 'hello'; // 錯誤}const宣告的常數必須初始化,而let宣告的變數不用
// 錯誤寫法const PI; PI = 3.14
以下是正確寫法,宣告的同時賦值
// 正確寫法const PI = 3.14;
初始化後值不可再修改
const PI = 3.14; PI = PI + 1; // 報錯
使用const 定義的字串和數字類型是不可變的,當定義一個物件或陣列時,裡面的內容是可以修改的。
const 定義物件可以修改屬性
const person = {
name: "yoyo",
age: 20,
};
person.name = 'hello';
person.age = 30;
console.log(person.name); // hello
console.log(person.age); // age但是不能給物件重新賦值
const person = {
name: "yoyo",
age: 20,
};
person = {name: 'xx', age: 23}; // 報錯const 定義陣列可以修改成員的值
const a = ['hello', 'world'];
// 修改元素a[0] = "yoyo";
console.log(a); // ['yoyo', 'world']
a.shift('12');
console.log(a); // ['world']
a.unshift('xx');
console.log(a); // ['xx', 'world']
a.push('yy');
console.log(a); // ['xx', 'world', 'yy']同樣無法對常數數組重新賦值:
const a = ['hello', 'world']; a = ['x', 'y']; // 錯誤
總結:常數就是值(記憶體位址)不能改變的量,const定義常用需給初始值。