目录

JavaScript 数组常量


ECMAScript 2015 (ES6)

2015 年,JavaScript 引入了一个重要的新关键字:const

使用声明数组已成为一种常见做法const

示例

const cars = ["Saab", "Volvo", "BMW"];
亲自试一试 »

无法重新分配

声明的数组const不能重新分配:

示例

const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];    // ERROR
亲自试一试 »

数组不是常量

关键字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");
亲自试一试 »

浏览器支持

这个constInternet 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可以随时初始化。

您甚至可以在声明数组之前使用该数组:

示例

还行吧:

cars = ["Saab", "Volvo", "BMW"];
var cars;
亲自试一试 »

常量块作用域

声明的数组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
}

完整的数组参考

有关完整的数组参考,请访问我们的:

完整的 JavaScript 数组参考.

该参考包含所有数组属性和方法的描述和示例。