首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Errors: Undeclared var

信息

代码语言:javascript
复制
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”是一个未声明的变量。

代码语言:javascript
复制
function foo() { 
  'use strict'; 
  bar = true; 
} 
foo(); // ReferenceError: assignment to undeclared variable bar

有效的情况

要使“bar”成为声明的变量,可以var在其前面添加关键字。

代码语言:javascript
复制
function foo() {
  'use strict';
  var bar = true;
}
foo();

扫码关注腾讯云开发者

领取腾讯云代金券