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)。