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

Javascript 性能:这些代码示例中哪一个更快?为什么?,javascript,jquery,performance,Javascript,Jquery,Performance,或 如果只运行这段代码,没有人会真正更快。第二个可能需要更多内存(因为创建了额外的变量) 如果你想确定,为什么不自己用一个小的自编基准测试它呢?如果你只运行这段代码,没有人会更快。第二个可能需要更多内存(因为创建了额外的变量) 如果您想确定,为什么不自己使用一个小型的自编基准测试它呢?我认为$('#element').method()不需要像以前那样多的内存 var-element=$('#element') ... 因为您将#元素绑定到变量。我认为$(“#元素”).method()不需要像以前


如果只运行这段代码,没有人会真正更快。第二个可能需要更多内存(因为创建了额外的变量)


如果你想确定,为什么不自己用一个小的自编基准测试它呢?

如果你只运行这段代码,没有人会更快。第二个可能需要更多内存(因为创建了额外的变量)

如果您想确定,为什么不自己使用一个小型的自编基准测试它呢?

我认为
$('#element').method()不需要像以前那样多的内存

var-element=$('#element')
... 因为您将#元素绑定到变量。

我认为
$(“#元素”).method()不需要像以前那样多的内存

var-element=$('#element')

... 因为您将#元素绑定到变量。

而不使用探查器,所以每个人都只是猜测。我会怀疑差别如此之小,不值得担心。第一种方法上面的第二种方法的成本很小,比如必须执行查找以查找“var元素”来调用该方法,但我认为查找“#元素”然后调用该方法的成本要高得多

然而,如果您接着对元素执行其他操作,则第二个将更快

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

没有使用分析器,每个人都只是猜测。我会怀疑差别如此之小,不值得担心。第一种方法上面的第二种方法的成本很小,比如必须执行查找以查找“var元素”来调用该方法,但我认为查找“#元素”然后调用该方法的成本要高得多

然而,如果您接着对元素执行其他操作,则第二个将更快

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

如果您使用的循环经常使用$('#element')的值,那么在循环之前的第二个版本中缓存它会有很大帮助


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

如果您使用的循环中经常使用$('#element')的值,那么在循环之前的第二个版本中缓存它会有很大帮助

就这一小片段而言,没什么区别。

只是为了好玩

\漠不关心的:

$('#element').foo().bar()

Juste fore funne

\漠不关心的:

$('#element').foo().bar()

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

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

所以区别只是内存消耗,而不是速度。。。不管DOM大小如何,绑定一个元素都会花费几个周期,但在任何情况下,第一个元素在大多数实现中都可能有一个隐式绑定,因此可能完全没有区别。DOM大小无关紧要,因为您将引用绑定到对象,因此不涉及复制。不管DOM对象有多大,引用的大小总是相同的。是的,这是有道理的。谢谢。所以区别只是内存消耗,而不是速度。。。不管DOM大小如何,绑定一个元素都会花费几个周期,但在任何情况下,第一个元素在大多数实现中都可能有一个隐式绑定,因此可能完全没有区别。DOM大小无关紧要,因为您将引用绑定到对象,因此不涉及复制。不管DOM对象有多大,引用的大小总是相同的。是的,这是有道理的。谢谢。差别最多可以忽略。差别最多可以忽略。几乎所有jQuery方法都支持链接。它的惯用形式是$('#element').foo().bar()。我想他是在展示在同一个选择器集上运行函数而不缓存是不好的,如果您需要在不同的时间运行函数。几乎所有的jQuery方法都支持链接。它的惯用形式是$('#element').foo().bar()。我认为他在展示在同一选择器集上运行函数而不缓存是不好的,如果您需要在不同的时间运行函数。
//Bad:
$('#element').foo();
$('#element').bar();

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