最近我注意到,只需使用名为id(jsbin)的变量,javascript就可以访问带有id的html元素的引用。
为什么会这样?为什么我们甚至不得不使用getElementById(id)
而不是简单地写id
?
答案 0 :(得分:5)
为什么会这样?
因为早期的浏览器就是这样做的,而且是BitBucket for anyone interested。
为什么我们甚至不得不使用
getElementById(id)
而不是简单地写id?
从技术上讲,你没有。但请注意,全局命名空间真的非常拥挤。那里扔了很多东西。不仅是带有ID的元素,还有某些元素,如果它们有name
s,浏览器上下文按名称等等,这意味着可能存在冲突。例如,如果您有一个id="document"
的元素,则不会创建自动全局。其他冲突的全局变量可能因浏览器而异。此外,无效JavaScript标识符(例如id
)的id="foo-bar"
值仍然是完全有效的id
值,但它的自动全局值(window["foo-bar"]
)很难对使用
使用getElementById
专门查找元素 ID 1 (不是name
等) 。所以它更加包容和可靠。
1 忽略IE的过时版本中的错误,这些错误无法正确约束它。