可能重复:
IE/Chrome: are DOM tree elements global variables here?
我偶然发现了一个奇怪的问题(Stack Overflow JavaScript和某人正在运行的用户脚本的组合),我可以追溯到用户脚本正在访问不再存在的变量的事实(因为我们制作了) SO JS中的一些变化。
但是这个变量实际上是返回一个DOM元素而不是undefined
/抛出错误,而该元素碰巧有变量的名称作为元素ID。
我确定这是一个Chrome错误,并且即将提交报告,所以我测试了其他浏览器,只是发现它们表现出相似但不相同的行为。
<body id="a-b-c">
<div id="something"></div>
something has type <script>document.write(typeof something)</script><br>
window["a-b-c"] has type
<script>document.write(typeof window["a-b-c"])</script><br>
window.hasOwnProperty("something") is
<script>document.write(window.hasOwnProperty("something"))</script><br>
something === document.getElementById("something") is
<script>document.write(something === document.getElementById("something"))</script><br>
</body>
某物具有类型对象
window [“a-b-c”]的类型为undefined
window.hasOwnProperty(“something”)是真的 某事=== document.getElementById(“something”)是真的
某物具有类型对象
window [“a-b-c”]具有类型对象
window.hasOwnProperty(“something”)是
某事=== document.getElementById(“something”)是真的
某物具有类型对象
window [“a-b-c”]具有类型对象
window.hasOwnProperty(“something”)是假的 某事=== document.getElementById(“something”)是真的
某物具有类型对象
window [“a-b-c”]具有类型对象
window.hasOwnProperty(“something”)是真的 某事=== document.getElementById(“something”)是真的
所以我的问题: