6

我今天遇到了这个要点,作者在评论中提到

var log = document.getElementById('log');

是不必要的,因为在 Javascript 中您可以只使用它log来访问 DOM 元素。在所有浏览器中都是这样吗?这种技术有名称/参考吗?

4

4 回答 4

4

在 Internet Explorer 下,ID 将成为全局变量,并可通过该名称在任何地方访问。

我认为这种“错误特征”是一件坏事。

我不记得它的所有特征和方面,我尽我所能试着假装它从未发生过。

简而言之:仅限 IE 的“功能”——最好忽略。阅读这篇文章了解更多详情。

于 2012-08-30T22:33:58.663 回答
4

令人惊讶的是,这实际上是在 HTML5 规范中,所以是的,它会起作用,不,它不是建议的遗留功能(至少现在 - 它曾经是 IE 唯一的技巧)。

您可以在此处阅读规范, http://www.whatwg.org/specs/web-apps/current-work/#named-access-on-the-window-object

我同意它实际上使命名空间变得混乱,并且冒昧地建议不要使用它 - 但它会并且确实适用于每个主要浏览器!

于 2012-10-14T23:56:45.583 回答
1

这是一个可疑的“功能”,不应该用于任何事情。它引入了全局状态和全局范围的变量,这是在任何应用程序中要避免的要点之一,更重要的是,它似乎只适用于 Internet Explorer 和某些版本的 Chrome。几乎可以肯定它的性能会降低,因为浏览器不仅必须访问 DOM,而且还必须查找log预先命名的变量。

于 2012-08-30T22:44:54.477 回答
0

对于现代浏览器的新版本,它可能会工作,但旧版本不能很好地处理它。如果您希望您的网站在旧版浏览器中运行,请使用 document.getElementById。

于 2012-08-30T22:32:48.467 回答