1. 程式人生 > 其它 >JavaScript 學習-10.使用const宣告常量

JavaScript 學習-10.使用const宣告常量

前言

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']; // 報錯