const

 

一、

1、const 跟 let 特性很像,只差在 const 所宣告變數的參考不能再指到別處。

const PI = 3.141592653589793;
PI = 3.14;      // This will give an error
PI = PI + 10;   // This will also give an error

 

2、const 所宣告物件的屬性值可以被改變,但其被參考的物件不能被改變。

// You can create a const object:
const car = { type: "Fiat", model: "500", color: "white" };
for (let i in car) {
    console.log(car[i]);
}

console.log("");
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
for (let i in car) {
    console.log(car[i]);
}

car = { type: "Volvo", model: "EX60", color: "red" };    // ERROR

 

3、const 所宣告 Array 裡的值可以被改變,但不能再改指到其他 Array。

// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];

// You can change an element:
cars[0] = "Toyota";

// You can add an element:
cars.push("Audi");

cars = ["Toyota", "Volvo", "Audi"];    // ERROR

 

二、

const 所宣告的變數,除了在 Global scope 與 function scope 互不干擾之外,

在 Block scope 也是互不干擾。

const x = 1;
console.log(x);

function foo() {
    const x = 3;
    console.log(x);
}
foo();

{
    const x = 5;
    console.log(x);
}

 

三、

1、不同於 var,const 不能去重新宣告變數。

2、對於 var 所宣告的變數,const 也不能去重新宣告變數。

3、對於 const 已經宣告的變數,var 也不能去重新宣告變數。

 

四、

用 var 宣告的 global variable 在 HTML 觀點,可以用 windows.object 去取,

但用 const 宣告的 global variable,則不能用 windows.object 去取。

 

五、

對於 var 可以先使用再宣告,但 const 不行(請參考JavaScript Hoisting)。