2015 年,JavaScript 引入了一个重要的新关键字:const
。
使用声明数组已成为一种常见做法const
:
声明的数组const
不能重新分配:
关键字const
有点误导。
它没有定义常量数组。它定义了对数组的常量引用。
因此,我们仍然可以更改常量数组的元素。
您可以更改常量数组的元素:
// 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");
亲自试一试 »
这个const
Internet Explorer 10 或更早版本不支持关键字。
下表定义了完全支持的第一个浏览器版本const
关键字:
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
JavaScriptconst
变量在声明时必须被赋值:
含义: 声明的数组const
声明时必须初始化。
使用const
不初始化数组是一个语法错误:
这是行不通的:
const cars;
cars = ["Saab", "Volvo", "BMW"];
声明的数组var
可以随时初始化。
您甚至可以在声明数组之前使用该数组:
声明的数组const
有块作用域。
在块中声明的数组与在块外声明的数组不同:
const cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
const cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is
"Saab"
亲自试一试 »
声明的数组var
没有块作用域:
var cars = ["Saab", "Volvo", "BMW"];
// Here cars[0] is "Saab"
{
var cars = ["Toyota", "Volvo", "BMW"];
// Here cars[0] is "Toyota"
}
// Here cars[0] is
"Toyota"
亲自试一试 »
您可以在本章中了解有关块作用域的更多信息:JavaScript 作用域。
重新声明用以下方式声明的数组var
允许在程序中的任何地方使用:
var cars = ["Volvo", "BMW"]; // Allowed
var cars = ["Toyota", "BMW"]; // Allowed
cars = ["Volvo", "Saab"]; // Allowed
重新声明或重新分配数组const
,在同一作用域内或同一块中,是不允许的:
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
{
var cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
}
重新声明或重新分配现有的const
不允许在同一作用域或同一块中使用数组:
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
const cars = ["Volvo", "BMW"]; // Not allowed
var cars = ["Volvo", "BMW"]; // Not allowed
cars = ["Volvo", "BMW"]; // Not allowed
}
重新声明数组const
,在另一个作用域或另一个块中,是允许的:
const cars = ["Volvo", "BMW"]; // Allowed
{
const cars = ["Volvo", "BMW"]; // Allowed
}
{
const cars = ["Volvo", "BMW"]; // Allowed
}
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!