Константа массива 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");
Поддержка браузера
Ключевое 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 |
Назначается при объявлении
Переменным JavaScript const
должно быть присвоено значение при их объявлении:
Значение: массивы, объявленные с помощью const
, должны быть инициализированы при их объявлении.
Использование const
без инициализации массива является синтаксической ошибкой:
Пример
Так не пойдет:
const cars;
cars = ["Saab", "Volvo", "BMW"];
Массивы, объявленные с помощью var
, могут быть инициализированы в любое время.
Вы даже можете использовать массив до его объявления:
Пример
Хорошо:
cars = ["Saab", "Volvo", "BMW"];
var cars;
Постоянная область действия блока
Массив, объявленный с помощью const
, имеет Block Scope .
Массив, объявленный в блоке, отличается от массива, объявленного вне блока:
Пример
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"
Вы можете узнать больше о Block Scope в главе: JavaScript Scope .
Повторное объявление массивов
Повторное объявление массива, объявленного с помощью 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 .
Справочник содержит описания и примеры всех свойств и методов массива.