【发布时间】:2014-02-15 22:03:24
【问题描述】:
JavaScript 是否会自动尝试将未定义的变量定义为:
document.getElementById('someUndefVarName')
如下所示,似乎是等价的:
<div id="myUndefVar">:)</div>
<script>
alert(myUndefVar); // why does this work!?
alert(document.getElementById('myUndefVar'));
</script>
参见 JSFiddle 示例:http://jsfiddle.net/AH35k/1/
还是发生了我不明白的其他事情?这真的让我措手不及,因为我使用的是“use strict”,所以我预计会出现某种错误。
【问题讨论】:
-
查看 JSFiddle 代码,该变量显然没有在任何地方明确定义。
-
是的。浏览器将从元素 ID 创建全局变量。不过,我不会依赖这种行为。 stackoverflow.com/a/6381766
-
浏览器为元素“id”值创建全局绑定(
window属性)。 -
@theporchrat:让我们找出答案:jsfiddle.net/AH35k/3 :-D
-
@theporchrat 我个人认为这是一个非常糟糕的主意。 Internet Explorer 很久以前就这样做了,最终其他浏览器都投降了。
标签: javascript