This page was translated from English by the community.Learn more and join the MDN Web Docs community.
const
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
Значение констант не может быть изменено новым присваиванием, а также не может быть переопределено. Константы (const) подчиняются области видимости уровня блока так же, как переменные, объявленные с использованием ключевого словаlet.
In this article
Синтаксис
const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
nameNИмя константы. Подчиняется тем же правилам, что иидентификаторы обычных переменных.
valueNЗначение константы. Может быть любым из тех типов, которые могут быть для переменных, включая функцию.
Описание
Это объявление создаёт константу, чья область действия может быть как глобальной, так и локальной внутри блока, в котором она объявлена. Глобальные константы не становятся свойствами объекта window, в отличие отvar-переменных. Инициализация константы обязательна; необходимо указать значение одновременно с объявлением (смысл в том, что потом это значение изменить уже нельзя).
const создаёт константу (новую именованную ссылку на область памяти), доступную только для чтения. Это не означает, что указываемое значение неизменно, но это означает, что идентификатор не может быть переназначен. Например, если константа указывает на объект, то сам объект может быть изменён.
Все соображения по поводувременных мёртвых зон, применимы и кlet и кconst.
Имена констант не могут совпадать с именами функций или переменных той же области видимости.
Примеры
Ниже описаны примеры, демонстрирующие поведениеconst. Попробуйте их выполнить впростом JavaScript-редакторе или в консоли браузера.
// Примечание: Идентификаторы констант могут быть объявлены как в верхнем,// так и в нижнем регистре. Но правилом хорошего тона является использование// верхнего регистра.// определим MY_FAV как константу и присвоим ей значение 7const MY_FAV = 7;// данное присваивание выдаст ошибку - Uncaught TypeError: Assignment to constant variable.MY_FAV = 20;// напечатает 7console.log("my favorite number is: " + MY_FAV);// попробуем переопределить константу, будет брошено исключение - Uncaught SyntaxError: Identifier 'MY_FAV' has already been declaredconst MY_FAV = 20;// имя MY_FAV зарезервировано константой выше, данная операция// выкинет исключениеvar MY_FAV = 20;// здесь также будет ошибкаlet MY_FAV = 20;// Важно отметить свойства области видимости уровня блокаif (MY_FAV === 7) { // Всё нормально. Создать константу или переменную MY_FAV можно. // (работает так же как и let при объявлении в блоке переменных, которые не const) const MY_FAV = 20; // MY_FAV теперь 20 console.log("my favorite number is " + MY_FAV); // это попадёт в глобальный контекст и выдаст ошибку var MY_FAV = 20;}// MY_FAV все ещё имеет значение 7console.log("my favorite number is " + MY_FAV);// Выдаст ошибку, потому что константа не инициализирована - Uncaught SyntaxError: Missing initializer in const declarationconst FOO;// const также работает с объектамиconst MY_OBJECT = { key: "value" };// Попытка переопределить ссылку на объект вызовет исключение - Uncaught TypeError: Assignment to constant variable.MY_OBJECT = { OTHER_KEY: "value" };// но, свойства объекта (ключи) можно изменятьMY_OBJECT.key = "otherValue"; // Используйте Object.freeze() для того, чтобы сделать объект неизменяемым// То же самое применимо к массивамconst MY_ARRAY = [];// Например, можно добавлять элементы в массивMY_ARRAY.push("A"); // ["A"]// Но менять ссылку на объект массива нельзя. Это вызовет исключение - Uncaught TypeError: Assignment to constant variableMY_ARRAY = ["B"];Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-let-and-const-declarations> |