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)
Тип оÑибки
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();