--- title: 'ReferenceError: assignment to undeclared variable "x"' slug: Web/JavaScript/Reference/Errors/Undeclared_var translation_of: Web/JavaScript/Reference/Errors/Undeclared_var ---
{{jsSidebar("Errors")}}

Сообщение

ReferenceError: assignment to undeclared variable "x" (Firefox)
ReferenceError: "x" is not defined (Chrome)
ReferenceError: Variable undefined in strict mode (Edge)

Тип ошбки

{{jsxref("ReferenceError")}} предупреждение только в строгом режиме.

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

Значению присвоена необъявленная переменная. Другими словами, было задание без ключевого слова var. Существуют некоторые различия между объявленными и необъявленными переменными, что может привести к неожиданным результатам, поэтому JavaScript представляет ошибку в строгом режиме.
 

Три примечания о объявленных и необъявленных переменных:

Более подробную информацию и примеры см. На странице справки Переменных

Errors about undeclared variable assignments occur in strict 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();

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