我问了this question ,事实证明,当从元素中删除属性时,首先使用 elem.xxx!==undefined
检查元素是否存在可以加快运行时间。 Proof .
为什么它更快?有更多的代码要处理,您将不得不遇到 removeAttribute()
方法,无论您采用何种方式。
最佳答案
嗯,首先你需要知道的是 elem.xxx
与 elem.getAttribute()
不同或与该属性相关的任何其他方法。
elem.xxx
是DOM元素的属性,而属性和DOM内部HTML上的元素,既相似又不同。例如,以这个 DOM 元素为例:<a href="#">
和这段代码:
//Let say var a is the <a> tag
a.getAttribute('href');// == #
a.href;// == http://www.something.com/# (i.e the complet URL)
但让我们采用自定义属性:<a custom="test">
//Let say var a is the <a> tag
a.getAttribute('custom');// == test
a.custom;// == undefined
所以你不能真正比较两者的速度,因为它们没有达到相同的结果。但是一个显然更快,因为属性是一种快速访问数据,而属性使用 get/hasAttribute DOM 函数。
现在,为什么没有条件更快?仅仅因为removeAttribute
不关心属性是否丢失,它会检查是否丢失。
所以使用 hasAttribute
之前 removeAttribute
就像做两次检查,但是条件有点慢,因为它需要检查条件是否满足才能运行代码。
关于javascript - 为什么在删除之前使用点符号检查属性比直接删除属性更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22565494/