使用“:not”和“.not()”选择器之间的性能差异?
以下两行之间是否存在速度/效率差异?
$("table td:not(:first-child)")
和
$("table td").not(":first-child")
我认为第一个会更好,因为它是删除对象,但是有实际的差异并且它是实质性的。
谢谢
正如你在jsperf测试中看到的那样 :not
平均:not
快两倍。 总体而言,这种性能可能只占整体执行时间的很小一部分。
jquery文档声明:
与将复杂选择器或变量推送到:not()选择器filter相比,.not()方法最终会为您提供更多可读选择。 在大多数情况下,这是一个更好的选择。
所以真的由你决定你获得的一秒的分数是否超过可读性。
取决于浏览器。
支持querySelectorAll
浏览器将通过…获得性能提升
$("table td:not(:first-child)")
…因为它是一个有效的选择器。 较旧的浏览器(IE7及更低版本)不会。
你需要小心:not()
选择器。 jQuery(Sizzle)使用非标准选择器扩展它,因此很容易打破qSA
。