TypeError: invalid assignment to const "x"(недопустимое назначение const "x")

В процессе перевода.

Сообщение

TypeError: недопустимое назначение const "x" (Firefox)
TypeError: присвоение переменной константы. (Хромированный)
TypeError: присвоение const (Edge)
TypeError: повторное объявление const 'x' (IE)

Тип ошибки

TypeError

Что пошло не так?

Константа-это значение, которое не может быть изменено программой в обычном исполнении. Он не может быть изменен путем повторного назначения и не может быть повторно объявлен. В JavaScript, константы объявляются с помощью ключевого слова const.

Примеры

Недопустимое повторное объявление

Assigning a value to the same constant name in the same block-scope will throw.

const COLUMNS = 80;

// ...

COLUMNS = 120; // TypeError: invalid assignment to const `COLUMNS'

Решение проблемы

Есть несколько вариантов, чтобы исправить эту ошибку. Проверьте, что должно было быть достигнуто с рассматриваемой константой.

Переназавите

Если вы хотели объявить другую константу, выберите другое имя и переименовать. Это имя константы уже используется в этой области.

const COLUMNS = 80;
const WIDE_COLUMNS = 120;

const, let или var?

Не используйте const, если вы не хотели объявлять константу. Возможно, вы хотели объявить переменную в области блока с let или глобальную переменную с var.

let columns = 80;

// ...

let columns = 120;

Обзор

Проверить, если вы находитесь в правильной области. Должна ли эта константа появиться в этой области или она должна была появиться в функции, например?

const COLUMNS = 80;

function setupBigScreenEnvironment() {
  const COLUMNS = 120;
}

const и неизменность

Объявление const создает ссылку только для чтения на значение. Это не означает, что значение, которое он содержит, является неизменяемым, просто идентификатор переменной не может быть переназначен. Например, если содержимое является объектом, это означает, что сам объект все еще может быть изменен. Это означает, что нельзя изменить значение, хранящееся в переменной:

const obj = {foo: 'bar'};
obj = {foo: 'baz'}; // TypeError: invalid assignment to const `obj'

Но можно изменить свойства в переменной:

obj.foo = 'baz';
obj; // Object { foo: "baz" }

Смотрите также

Метки документа и участники

Внесли вклад в эту страницу: mdnwebdocs-bot, MakarovDs777
Обновлялась последний раз: mdnwebdocs-bot,