为什么我们不在JavaScript中使用元素ID作为标识符?

为什么我们不在JavaScript中使用元素ID作为标识符?

我开始使用的所有浏览器都允许id="myDiv"通过简单地编写来访问元素:

myDiv

见这里:http//jsfiddle.net/L91q54Lt/

无论如何,这种方法似乎记录很少,事实上,我遇到的来源甚至没有提及,而是假设有人会使用

document.getElementById("myDiv")

或者可能

document.querySelector("#myDiv")

即使在事先知道其ID(即不在运行时计算)时也要访问DOM元素。我可以说,后者的方法具有保持代码安全的优势,如果有人无意中尝试myDiv在更广泛的范围内重新定义(虽然不是这么好的想法......),用一些不同的值覆盖它并继续而没有注意到冲突。

但其他那个呢?除了代码设计之外,使用上面的简短形式是否有任何问题,或者我在这里缺少什么?


慕运维8079593
浏览 566回答 3
3回答

Cats萌萌

好问题。正如爱因斯坦可能没有说的那样,事情应尽可能简单,并不简单。如果有人无意中尝试在更广泛的范围内重新定义myDiv(虽然不是这么好的想法......),后一种方法的优点是保持代码安全,用一些不同的值覆盖它并继续而不注意冲突这就是为什么这是一个坏主意的主要原因,而且这已经足够了。全局变量不能安全依赖。它们可以随时被任何最终在页面上运行的脚本覆盖。除此之外,只需输入myDiv就不是“简短形式” document.getElementById()。它是对全局变量的引用。如果元素不存在,document.getElementById()将很乐意返回null,而尝试访问不存在的全局变量将引发引用错误,因此您需要将对try / catch块中的全局引用包装起来是安全的。这就是为什么jQuery如此受欢迎的一个原因:如果你这样做$("#myDiv").remove(),并且没有id的元素,myDiv就不会抛出任何错误 - 代码只会默默地做什么,这通常就是你在做DOM操作时所需要的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript