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
при объявлении:
- Новый массив
- Новый объект
- Новая функция
- Новое регулярное выражение
Постоянные объекты и массивы
Ключевое слово const
немного вводит в заблуждение.
Она не определяет постоянное значение. Она определяет постоянную ссылку на значение.
Из-за этого вы НЕ можете:
- Переназначить постоянное значение
- Переназначить массив констант
- Переназначить постоянный объект
- Измените элементы массива констант
- Изменение свойств постоянного объекта
Но вы МОЖЕТЕ:
Массивы констант
Вы можете изменить элементы массива констант:
Пример
// Вы можете создать постоянный массив:
const cars = ["Сааб", "Вольво", "БМВ"];
// Вы можете изменить элемент:
cars[0] = "Тойота";
// Вы можете добавить элемент:
cars.push("Ауди");
Попробуйте сами »
Но вы НЕ можете переназначить массив:
Пример
const cars = ["Сааб", "Вольво", "БМВ"];
cars = ["Тойота", "Вольво", "Ауди"]; // ОШИБКА
Попробуйте сами »
Объекты констант
Вы можете изменить свойства объекта констант:
Пример
// Вы можете создать объект const:
const car = {type:"Фиат", model:"500", color:"белый"};
// Вы можете изменить свойство:
car.color = "красный";
// Вы можете добавить свойство:
car.owner = "Щипунов";
Попробуйте сами »
Но вы НЕ можете переназначить объект:
Пример
const car = {type:"Фиат", model:"500", color:"белый"};
car = {type:"Вольво", model:"EX60", color:"красный"}; // ОШИБКА
Попробуйте сами »
Поддержка браузера
Ключевое слово 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, объявленный в блоке, в этом примере не совпадает с 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; // Допустимо
}
Подъем констант
Переменные, определенные с помощью var
, являются поднятые сверху и могут быть инициализированы в любое время.
Смысл в том: Вы можете использовать переменную до ее объявления:
Если вы хотите узнать больше о подъеме, изучите главу Подъем JavaScript.
Переменные, определенные с помощью const
, также поднимаются наверх, но не инициализируются.
Смысл в том: Использование const
до ее объявления приведет к ReferenceError
: