这两个代码块有没有任何显着的性能差异?jQuery元素选择器
var element = $("#some-element");
SomeMethod1(element);
SomeMethod2(element);
SomeMethod3(element);
和...
SomeMethod1($("#some-element"));
SomeMethod2($("#some-element"));
SomeMethod3($("#some-element"));
这两个代码块有没有任何显着的性能差异?jQuery元素选择器
var element = $("#some-element");
SomeMethod1(element);
SomeMethod2(element);
SomeMethod3(element);
和...
SomeMethod1($("#some-element"));
SomeMethod2($("#some-element"));
SomeMethod3($("#some-element"));
这取决于您的意思significant
。
第一个代码段总是比第二个代码段快,因为不止一次调用$()
会产生代价(因为jQuery不会缓存先前调用的结果)。无论重要与否取决于您的性能要求。
这确实在DOM元素查找并创建一个jQuery对象。
var element = $("#some-element");
在第一个,它重用此对象。
在第二个,它必须做查找和创建3倍,因此,第一个是更好的性能明智。
这并不重要,但也不可忽略。在这种情况下,因为您使用的是ID选择器,它不会有太大的区别,但是如果您要使用类选择器或属性选择器,那么它将会产生很大的差异。
第一个将总是给你比第二个更好的性能,因为你在多个地方重复使用同一个对象。
是的。第一个更快,第二个更慢
为什么?
因为对于元件第一searchs只有一次,第二三次
后期:
$()
,其中的每一个导致鉴于使用的选择器的类型,我不会说它是显着,但后者需要更多的处理时间并使用更多的内存(请参阅上面的列表)。这些东西加起来就超过了应用程序的大小。
使用不太直接的选择器,它可能会变得非常快速。
编辑:然而,后者,是丑陋的,让我疯了。 :)
那么,第一个片段重用第一个电话到$("#some-element")
,而另一个例子需要查找三次#some-element
。
不知道是否有很大的性能差异(这是在客户端,除非你的页面已经难以管理大,这有什么关系吗?)但据我所知,推荐第二种方法。设置一个jQuery对象来引用DOM的一部分可能会导致一些意想不到的行为。 –