【发布时间】:2014-04-29 05:13:47
【问题描述】:
我问了this question,结果发现当从一个元素中移除一个属性时,先使用elem.xxx!==undefined检查该元素是否存在可以加快运行时间。 Proof.
为什么它更快?还有更多的代码需要处理,无论你采用哪种方式,你都必须遇到removeAttribute() 方法去吧。
【问题讨论】:
-
在我看来,检查属性比调用方法更快。对我来说并不奇怪。在大多数其他语言中也是如此。
-
但这不仅仅是检查一个属性,而是检查一个属性,然后调用一个方法来删除它。这比简单地删除属性而不检查要快。这让我大吃一惊。
-
谢谢@Karl-AndréGagnon,正如你所知道的......我是 JS 新手,我会在睡觉和醒来后阅读
.prop(希望如此)。但是即使el.xxx会比hastAttribute更快,为什么使用el.xxx检查然后删除属性仍然比不检查删除属性更快? -
在你的 jsperf 中,它没有调用方法来删除它,因为你的 DOM 对象上不存在该属性,即使你将它添加到 DOM 对象中,它也只会在第一次出现性能基准和之后的迭代将消失。
-
@dayuloli - 你的新 jsPerf 也不能正常工作,因为
"class"属性是由elem.className而不是elem.class引用的,因为class是 Javascript 中的保留字。在 jsPerf 中您必须做的第一件事是在衡量其性能之前确保代码实际工作。
标签: javascript performance dom syntax conditional