我今天遇到了这个gist,并在评论中提到了
var log = document.getElementById('log');
是不必要的,因为在Javascript中你可以使用log
来访问DOM元素。所有浏览器都是如此吗?这项技术有名称/参考吗?
答案 0 :(得分:5)
在Internet Explorer中,ID将成为全局变量,并且可以通过该名称随处访问。
我认为这种'错误'是一件坏事。
我不记得它的所有功能和方面,我尽力尝试假装从未发生过。
简而言之:仅限IE的“功能” - 最好被忽略。请阅读this article了解详情。
答案 1 :(得分:4)
令人惊讶的是,这实际上是在HTML5规范中,所以 是的,它会工作,并不是它不是一个遗留的功能,因为它被建议(至少 - 它曾经是IE唯一的技巧)。
你可以在这里阅读规范, http://www.whatwg.org/specs/web-apps/current-work/#named-access-on-the-window-object
我会同意它实际上会混淆命名空间,并且会冒昧地建议不要使用它 - 但它会在每个主要浏览器上工作!
答案 2 :(得分:1)
这是一个可疑的“功能”,不应该用于任何事情。它引入了全局状态和全局范围变量,这是在任何应用程序中要避免的要点之一,更重要的是,它们似乎只适用于Internet Explorer和某些版本的Chrome。几乎可以肯定,性能较差,因为浏览器不仅必须访问DOM,而且还必须事先查找名为log
的变量。
答案 3 :(得分:0)
对于新版本的现代浏览器,它可能有效,但旧版本无法正常处理。如果您希望您的网站在旧版浏览器中运行,请使用document.getElementById。