В 2015 году в JavaScript появилось новое важное ключевое слово: const.
Стало обычной практикой объявлять массивы с помощью const:
const cars = ["Saab", "Volvo", "BMW"];Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p id="demo"></p>
<script>
const cars = ["Saab", "Volvo", "BMW"];
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Массив, объявленный с помощью const, не может быть переназначен:
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERRORПопробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>You can NOT reassign a constant array:</p>
<p id="demo"></p>
<script>
try {
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];
}
catch (err) {
document.getElementById("demo").innerHTML = err;
}
</script>
</body>
</html>
Ключевое слово 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");Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript const</h2>
<p>Declaring a constant array does NOT make the elements unchangeable:</p>
<p id="demo"></p>
<script>
// Create an Array:
const cars = ["Saab", "Volvo", "BMW"];
// Change an element:
cars[0] = "Toyota";
// Add an element:
cars.push("Audi");
// Display the Array:
document.getElementById("demo").innerHTML = cars;
</script>
</body>
</html>
Ключевое слово 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 |
Переменным const JavaScript должно быть присвоено значение при их объявлении: <p>Значение: массив, объявленный с помощью const, должен быть инициализирован при его объявлении.
Использование const без инициализации массива является синтаксисом. ошибка:
Так не пойдет:
const cars;
cars = ["Saab", "Volvo", "BMW"];Массивы, объявленные с помощью var, можно инициализировать в любое время.
Вы даже можете использовать массив до его объявления:
Хорошо:
cars = ["Saab", "Volvo", "BMW"];
var cars;Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>JavaScript Hoisting</h2>
<p id="demo"></p>
<script>
cars = ["Saab", "Volvo", "BMW"];
var cars;
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Массив, объявленный с помощью 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"Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Declaring an Array Using const</h2>
<p id="demo"></p>
<script>
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"
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Массив, объявленный с помощью 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"Попробуйте сами →
<!DOCTYPE html>
<html>
<body>
<h1>JavaScript Arrays</h1>
<h2>Declaring an Array Using var</h2>
<p id="demo"></p>
<script>
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"
document.getElementById("demo").innerHTML = cars[0];
</script>
</body>
</html>
Вы можете узнать больше о области действия блока в главе «Область действия 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.
Справочник содержит описания и примеры всех Array. свойства и методы.