JavaScript Ключевое слово Const
Ключевое слово const
было введено в ES6 (2015).
Переменные, определённые с помощью const
не могут быть повторно объявлены.
Переменные, определённые с помощью const
нельзя переназначить.
Переменные, определённые с помощью const
имеют область действия блока.
Невозможно переназначить
Переменную const
нельзя переназначить:
Пример
const PI = 3.141592653589793;
PI = 3.14; // Это выдаст ошибку
PI = PI + 10; // Это также выдаст ошибку
Попробуйте сами »
Должен быть назначен
JavaScript переменным const
должно быть присвоено значение при их объявлении.
Правильно
const PI = 3.14159265359;
Неправильно
const PI;
PI = 3.14159265359;
Когда использовать JavaScript const?
Как правило, всегда объявляйте переменные с помощью const
, если вы не знаете, что значение изменится.
Всегда используйте const
при объявлении:
- Новый массив
- Новый объект
- Новая функция
- Новый RegExp
Постоянные объекты и массивы
Ключевое слово const
немного вводит в заблуждение.
Оно не определяет постоянное значение. Оно определяет постоянную ссылку на значение.
Из-за этого вы НЕ МОЖЕТЕ:
- Переназначить постоянное значение
- Переназначить постоянный массив
- Переназначить постоянный объект
Но вы МОЖЕТЕ:
- Изменить постоянный массив
- Изменить постоянный объект
Постоянные массивы
Вы можете изменить элементы постоянного массива:
Пример
// Вы можете создать постоянный массив:
const cars = ["Saab", "Volvo", "BMW"];
// Вы можете изменить элемент:
cars[0] = "Toyota";
// Вы можете добавить элемент:
cars.push("Audi");
Попробуйте сами »
Но вы НЕ можете переназначить массив:
Пример
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR (ОШИБКА)
Попробуйте сами »
Постоянные объекты
Вы можете изменить свойства постоянного объекта:
Пример
// Вы можете создать объект const:
const car = {type:"Fiat", model:"500", color:"white"};
// Вы можете изменить свойство:
car.color = "red";
// Вы можете добавить свойство:
car.owner = "Johnson";
Попробуйте сами »
Но вы НЕ можете переназначить объект:
Пример
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; // ERROR (ОШИБКА)
Попробуйте сами »
Поддержка браузерами
Ключевое слово 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
аналогично let
когда дело доходит Области действия блока.
Переменная х, объявленная в блоке в этом примере, не совпадает с переменной x, объявленной вне блока:
Пример
const x = 10;
// Здесь x равно 10
{
const x = 2;
// Здесь x равно 2
}
// Здесь x равно 10
Попробуйте сами »
Вы можете узнать больше об области действия блока в главе JavaScript Область действия.
Повторное объявление
Повторное объявление JavaScript переменной var
разрешено в любом месте программы:
Пример
var x = 2; // Разрешено
var x = 3; // Разрешено
x = 4; // Разрешено
Повторное объявление существующей переменной var
или let
на const
в той же области не разрешено:
Пример
var x = 2; // Разрешено
const x = 2; // Не разрешено
{
let x = 2; // Разрешено
const x = 2; // Не разрешено
}
{
const x = 2; // Разрешено
const x = 2; // Не разрешено
}
Переназначение существующей переменной const
в той же области действия не разрешено:
Пример
const x = 2; // Разрешено
x = 2; // Не разрешено
var x = 2; // Не разрешено
let x = 2; // Не разрешено
const x = 2; // Не разрешено
{
const x = 2; // Разрешено
x = 2;
// Не разрешено
var x = 2;
// Не разрешено
let x = 2;
// Не разрешено
const x = 2; // Не разрешено
}
Разрешено повторное объявление переменной с помощью const
в другой области действия или в другом блоке:
Пример
const x = 2; // Разрешено
{
const x = 3; // Разрешено
}
{
const x = 4; // Разрешено
}
Подъём (хостинг) Const
Переменные, определенные с помощью var
поднимаются вверх и могут быть инициализированы в любое время.
Важно: вы можете использовать переменную до её объявления:
Если вы хотите узнать больше о подъёме, изучите главу JavaScript Подъём на нашем сайте W3Schools на русском.
Переменные, определенные с помощью const
также поднимаются вверх, но не инициализируются.
Важно: Использование переменной const
перед её объявлением приведёт к ошибке ReferenceError
: