JavaScript 學習-10.使用const宣告常量
阿新 • • 發佈:2022-05-18
前言
const 用於宣告一個或多個常量,宣告時必須進行初始化,且初始化後值不可再修改。
const 宣告常量
const定義常量與使用let 定義的變數相似:
- 二者都是塊級作用域
- 都不能和它所在作用域內的其他變數或函式擁有相同的名稱
兩者還有以下兩點區別:
- const宣告的常量必須初始化,而let宣告的變數不用
- 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 定義物件可以修改屬性
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 定義陣列可以修改成員的值
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']; // 報錯