JavaScript Array Const
ECMAScript 2015 (ES6)
在 2015 年,JavaScript 引入了一個重要的新關鍵字:const
。
使用 const
宣告陣列已成為一種常見做法。
不能重新賦值
使用 const
宣告的陣列不能被重新賦值。
陣列不是常量
關鍵字 const
具有一定的誤導性。
它並非定義一個常量陣列。它定義了一個對陣列的常量引用。
因此,我們仍然可以更改常量陣列的元素。
元素可以重新賦值
您可以更改常量陣列的元素。
示例
// 您可以建立一個常量陣列
const cars = ["Saab", "Volvo", "BMW"];
// 您可以更改一個元素
cars[0] = "Toyota";
// 您可以新增一個元素
cars.push("Audi");
自己動手試一試 »
瀏覽器支援
const
關鍵字在 Internet Explorer 10 及更早版本中不受支援。
下表定義了完全支援 const
關鍵字的第一個瀏覽器版本。
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
2016 年 3 月 | 2013 年 10 月 | 2015 年 2 月 | 2016 年 9 月 | 2016 年 3 月 |
宣告時賦值
JavaScript const
變數在宣告時必須被賦值。
含義:用 const
宣告的陣列必須在宣告時進行初始化。
不初始化陣列而使用 const
是語法錯誤。
示例
這樣行不通
const cars;
cars = ["Saab", "Volvo", "BMW"];
用 var
宣告的陣列可以在任何時候初始化。
您甚至可以在宣告之前使用該陣列。
Const 塊級作用域
用 const
宣告的陣列具有塊級作用域。
在塊內宣告的陣列與在塊外宣告的陣列不同。
示例
const cars = ["Saab", "Volvo", "BMW"];
// 這裡 cars[0] 是 "Saab"
{
const cars = ["Toyota", "Volvo", "BMW"];
// 這裡 cars[0] 是 "Toyota"
}
// 這裡 cars[0] 是"Saab"
自己動手試一試 »
用 var
宣告的陣列沒有塊級作用域。
示例
var cars = ["Saab", "Volvo", "BMW"];
// 這裡 cars[0] 是 "Saab"
{
var cars = ["Toyota", "Volvo", "BMW"];
// 這裡 cars[0] 是 "Toyota"
}
// 這裡 cars[0] 是"Toyota"
自己動手試一試 »
您可以在章節“JavaScript 作用域”中瞭解更多關於塊級作用域的知識。
重新宣告陣列
用 var
宣告的陣列可以在程式中的任何位置重新宣告。
示例
var cars = ["Volvo", "BMW"]; // 允許
var cars = ["Toyota", "BMW"]; // 允許
cars = ["Volvo", "Saab"]; // 允許
在同一作用域或同一塊中,不允許使用 const
重新宣告或重新賦值陣列。
示例
var cars = ["Volvo", "BMW"]; // 允許
const cars = ["Volvo", "BMW"]; // 不允許
{
var cars = ["Volvo", "BMW"]; // 允許
const cars = ["Volvo", "BMW"]; // 不允許
}
在同一作用域或同一塊中,不允許重新宣告或重新賦值現有的 const
陣列。
示例
const cars = ["Volvo", "BMW"]; // 允許
const cars = ["Volvo", "BMW"]; // 不允許
var cars = ["Volvo", "BMW"]; // 不允許
cars = ["Volvo", "BMW"]; // 不允許
{
const cars = ["Volvo", "BMW"]; // 允許
const cars = ["Volvo", "BMW"]; // 不允許
var cars = ["Volvo", "BMW"]; // 不允許
cars = ["Volvo", "BMW"]; // 不允許
}
在另一個作用域或另一個塊中,允許使用 const
重新宣告陣列。
示例
const cars = ["Volvo", "BMW"]; // 允許
{
const cars = ["Volvo", "BMW"]; // 允許
}
{
const cars = ["Volvo", "BMW"]; // 允許
}