为什么未定义变量时变量赋值不引发ReferenceError-JavaScript

时间:2019-05-10 10:04:30

标签: javascript

我已经在Chrome,Opera,Microsoft Edge,Internet Explorer和Mozilla Firefox中进行了尝试,但仍然遇到相同的情况:未抛出异常,这是我分配的变量值未定义。


语法是:

ReferenceError

为什么会出现这种现象?

编辑: 只是要添加,如果分配的是对象的属性,则此方法不起作用,即:

// Where `identifier_name` was not formally declared/ initialized.
(function() {})(identifier_name = 2)

2 个答案:

答案 0 :(得分:3)

这就是我们过去所说的horror of implicit globals

您基本上是偶然创建一个全局变量的。您可以"use strict";模式来防止这种情况。

您的第二个片段不起作用,因为您尝试访问一个尚未声明的变量,这与分配给尚未声明的变量(因为隐式声明该变量)不同。

答案 1 :(得分:0)

在这两种情况下,您都声明了全局变量,但未使用'var'关键字。