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"]; // 允许
}