Errors: Undeclared var
Errors: Undeclared var
信息
ReferenceError: assignment to undeclared variable "x" (Firefox)
ReferenceError: "x" is not defined (Chrome)
ReferenceError: Variable undefined in strict mode (Edge)
错误类型
ReferenceError
仅在严格模式下警告。
哪里出错了?
值已被分配给未声明的变量。换句话说,有一个没有var关键字的赋值。声明和未声明的变量之间有一些区别,这可能会导致意外的结果,这就是为什么JavaScript在严格模式下出现错误。
关于声明和未声明的变量有三点需要注意:
- 声明的变量在声明它们的执行上下文中受到约束。未声明的变量总是全局的。
- 声明的变量是在任何代码执行之前创建的。未声明的变量在分配给它们的代码执行之前不存在。
- 声明的变量是其执行上下文(函数或全局)的不可配置属性。未声明的变量是可配置的(例如可以被删除)。
有关更多详细信息和示例,请参阅var
参考页面。
关于未声明的变量赋值的错误仅出现在严格模式代码中。在非严格的代码中,他们可被忽略。
示例
无效的情况
在这种情况下,变量“bar”是一个未声明的变量。
function foo() {
'use strict';
bar = true;
}
foo( // ReferenceError: assignment to undeclared variable bar
有效的情况
要使“bar”成为声明的变量,可以var
在其前面添加关键字。
function foo() {
'use strict';
var bar = true;
}
foo(