This page was translated from English by the community.Learn more and join the MDN Web Docs community.
ReferenceError: assignment to undeclared variable "x"
Сообщение
ReferenceError: assignment to undeclared variable "x" (Firefox)ReferenceError: "x" is not defined (Chrome)ReferenceError: Variable undefined in strict mode (Edge)
In this article
Тип ошибки
ReferenceError предупреждение только встрогом режиме.
Что пошло не так?
Значению присвоена необъявленная переменная. Другими словами, было задание без ключевого слова var. Существуют некоторые различия между объявленными и необъявленными переменными, что может привести к неожиданным результатам, поэтому JavaScript представляет ошибку в строгом режиме.
Три примечания о объявленных и необъявленных переменных:
- Объявленные переменные ограничены в контексте выполнения, в котором они объявлены. Необъявленные переменные всегда глобальны.
- Объявленные переменные создаются до выполнения любого кода. Необъявленные переменные не существуют до тех пор, пока не будет выполняться присвоение им кода.
- Объявленные переменные - это неконфигурируемое свойство контекста их выполнения (функция или глобальная). Необъявленные переменные настраиваются (например, могут быть удалены).
Более подробную информацию и примеры см. На странице справкиПеременных
Errors about undeclared variable assignments occur instrict mode code only. In non-strict code, they are silently ignored.
Примеры
>Неправильно
В этом случае переменная "bar" является необъявленной переменной.
function foo() { "use strict"; bar = true;}foo(); // ReferenceError: assignment to undeclared variable barПравильно
Чтобы сделать "bar" объявленной переменной, вы можете добавить перед ней ключевое словоvar .
function foo() { "use strict"; var bar = true;}foo();