ReferenceError: 赋值给未声明的变量 "x"
仅 JavaScript 严格模式 的异常 "Assignment to undeclared variable" 发生在将值分配给未声明的变量时。
消息
ReferenceError: x is not defined (V8-based) ReferenceError: assignment to undeclared variable x (Firefox) ReferenceError: Can't find variable: x (Safari)
错误类型
ReferenceError
仅在 严格模式 中。
哪里出错了?
值已分配给未声明的变量。换句话说,在没有 var
关键字的情况下进行了赋值。声明的变量和未声明的变量之间存在一些差异,这可能会导致意外的结果,因此 JavaScript 在严格模式下会显示错误。
关于声明的变量和未声明的变量需要注意的三点
- 声明的变量在其声明的执行上下文中受到限制。未声明的变量始终是全局的。
- 声明的变量在任何代码执行之前都会创建。未声明的变量在执行分配给它们的代码之前不存在。
- 声明的变量是其执行上下文(函数或全局)的不可配置属性。未声明的变量是可配置的(例如,可以删除)。
有关更多详细信息和示例,请参见 var
参考页面。
关于未声明变量赋值的错误仅在 严格模式代码 中出现。在非严格模式代码中,它们会静默忽略。
示例
无效情况
在这种情况下,变量 "bar" 是一个未声明的变量。
js
function foo() {
"use strict";
bar = true;
}
foo(); // ReferenceError: assignment to undeclared variable bar