我已经在Chrome,歌剧,微软边缘,Internet Explorer和Mozilla Firefox浏览器尝试这样做,仍然得到同样的情况:一个ReferenceError
异常不抛出该赋值的变量我没有定义。
语法是:
// Where `identifier_name` was not formally declared/ initialized.
(function() {})(identifier_name = 2)
为什么会出现这种行为?
编辑:只是补充一下,如果分配的是对象的属性,则这不起作用,即:
// Throws a ReferenceError that `object_name` is not defined.
(function() {})(object_name.property_name = 2)
这就是我们过去所说的隐式全局变量的可怕之处
您基本上是意外创建了一个全局变量。你可以"use strict";
模式来防止这种情况。
您的第二个代码段不起作用,因为您正在尝试访问尚未声明的变量,这与分配给尚未声明的变量不同(因为它隐式声明了该变量)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句