性能:这些代码示例中的哪一个更快,为什么?

时间:2009-11-22 12:29:56

标签: javascript jquery performance

$('#element').method();

var element = $('#element');
element.method();

6 个答案:

答案 0 :(得分:10)

不使用分析器,每个人都只是在猜测。我怀疑差异是如此之小,不值得担心。第二个上面的成本很小,比如必须预先形成查找以找到'var element'来调用方法,但是我会想到找到'#element'然后调用该方法要贵得多。

但是,如果你继续用元素做其他事情,第二个会更快

//Bad:
$('#element').foo();
$('#element').bar();

//Good:
var e = $('#element');
e.foo();
e.bar();

答案 1 :(得分:1)

如果你使用了一个循环,其中$('#element')的值被大量使用,那么在循环之前将其缓存为第二个版本将有很大帮助。

对于这个小片段,它没什么区别。

答案 2 :(得分:1)

通过id(#)查找非常快。我刚刚在一个带有2个div标签的小页面上测试了你的场景。这是我使用的代码   var x = $(“#div1”);   var y = $(“#div2”);   var z = $(“#div1”); 我的笔记本电脑每次查找大约需要0.3毫秒。 div1的第二次查找执行与第一次相同的内部jQuery方法 - 表示没有已经查找过的对象的缓存 当您使用其他选择器(如classname或更高级的jQuery选择器)时,性能会成为一个更大的问题。我对jQuery Selector Performance做了一些分析 - 检查一下 - 希望它有用。

答案 3 :(得分:0)

如果您只运行此代码,无人应该更快。第二个可能需要更多内存(因为创建了额外的变量)。

如果您想确定,为什么不使用小型自写基准测试自己?

答案 4 :(得分:0)

我认为$('#element').method();不需要像

那样多的内存

var element = $('#element');  ...因为你将#element绑定到一个变量。

答案 5 :(得分:0)

Juste fore funne

\冷漠:

$( '#元件')FOO()栏();