我已经在Chrome,Opera,Microsoft Edge,Internet Explorer和Mozilla Firefox中进行了尝试,但仍然遇到相同的情况:未抛出异常,这是我分配的变量值未定义。
语法是:
ReferenceError
为什么会出现这种现象?
编辑: 只是要添加,如果分配的是对象的属性,则此方法不起作用,即:
// Where `identifier_name` was not formally declared/ initialized.
(function() {})(identifier_name = 2)
答案 0 :(得分:3)
这就是我们过去所说的horror of implicit globals
您基本上是偶然创建一个全局变量的。您可以"use strict";
模式来防止这种情况。
您的第二个片段不起作用,因为您尝试访问一个尚未声明的变量,这与分配给尚未声明的变量(因为隐式声明该变量)不同。
答案 1 :(得分:0)
在这两种情况下,您都声明了全局变量,但未使用'var'关键字。