JavaScript是否自动尝试将未定义的变量定义为:
document.getElementById('someUndefVarName')
Run Code Online (Sandbox Code Playgroud)
如下所示,以下似乎是等效的:
<div id="myUndefVar">:)</div>
<script>
alert(myUndefVar); // why does this work!?
alert(document.getElementById('myUndefVar'));
</script>
Run Code Online (Sandbox Code Playgroud)
参见JSFiddle示例:http://jsfiddle.net/AH35k/1/
或者是其他发生的事情,我不明白?这真的让我措手不及,因为我正在使用"use strict",因此我预计会出现一些错误.
一些(并且只有一些)浏览器从ID创建全局变量.
这在调试时很有用(例如在chrome控制台中你可以输入"Blah"来访问HTML元素id="Blah"),但不应该依赖于跨浏览器工作.
此外,如果你这样做:
<div id="myUndefVar">:)</div>
<script>
var myUndefVar;
alert(myUndefVar);
</script>
Run Code Online (Sandbox Code Playgroud)
或这个:
<div id="myUndefVar">:)</div>
<script>
alert(myUndefVar);
var myUndefVar;
</script>
Run Code Online (Sandbox Code Playgroud)
然后alert将显示该值undefined.如果在同一作用域中没有定义其他var且名称相同(包括提升,如第二个示例中所示),它将仅查找元素的命名ID.
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |