ReferenceError:赋值给未声明的变量“x”

JavaScript严格模式-只有当值被赋值给未声明的变量时,才会出现“赋值给尚未声明的变量”例外。

消息

ReferenceError:x未定义(基于V8)ReferenceError:赋值给未声明的变量x(Firefox)ReferenceError:找不到变量:x(Safari)

错误类型

引用错误在里面严格模式只有。

出了什么问题?

已将值分配给未声明的变量。换句话说,有一个赋值没有变量关键字。声明的变量和未声明的变量之间存在一些差异,这可能会导致意外的结果,这就是JavaScript在严格模式下出现错误的原因。

关于已声明和未声明的变量,需要注意三件事:

  • 声明的变量在声明它们的执行上下文中受到约束。未声明的变量始终是全局变量。
  • 声明的变量是在执行任何代码之前创建的。未声明的变量在执行分配给它们的代码之前不存在。
  • 声明的变量是其执行上下文(函数或全局)的非配置属性。未声明的变量是可配置的(例如,可以删除)。

有关更多详细信息和示例,请参阅变量参考页。

有关未声明变量赋值的错误发生在严格模式代码只有。在非严格的代码中,它们被默默地忽略。

示例

无效案例

在这种情况下,变量“bar”是未声明的变量。

js型
函数foo(){“使用严格”;bar=真;}foo();//ReferenceError:赋值给未声明的变量栏

有效案例

要使“bar”成为声明变量,可以添加,常数,或变量前面的关键字。

js型
函数foo(){“使用严格”;const bar=真;}foo();

另请参见