不同javascript for循环的性能

不同javascript for循环的性能,javascript,performance,for-loop,Javascript,Performance,For Loop,根据javascript中for循环的测试,使用以下形式: for (var i = 0, item; item = itemsArray[i++];){ item = Math.random(); } 比典型的for循环快几个数量级,即使在IE8这样的老浏览器中也是如此。我还没有找到这个循环构造的另一个参考,我想知道为什么它会快得多 此外,我还查看了一些javascript库的源代码,比如和,它们在代码中没有使用这种结构 这让我怀疑。如果这种形式的循环速度快得多,为什么由更聪明的人编写

根据javascript中for循环的测试,使用以下形式:

for (var i = 0, item; item = itemsArray[i++];){
   item = Math.random();
}
比典型的for循环快几个数量级,即使在IE8这样的老浏览器中也是如此。我还没有找到这个循环构造的另一个参考,我想知道为什么它会快得多

此外,我还查看了一些javascript库的源代码,比如和,它们在代码中没有使用这种结构

这让我怀疑。如果这种形式的循环速度快得多,为什么由更聪明的人编写的流行库不使用它呢

我是否错过了一些东西,这个循环没有表面上看起来那么好

我是否错过了一些东西,这个循环没有表面上看起来那么好

每次您的
itemsArray
中的一个
项目出现故障时,您的情况都无法达到预期效果

实际上,这也是为什么您的测试说它会快得多的原因,这只是因为它甚至没有像
itemsArray[0]=0
那样进行第一次迭代。一个迭代
[1..1001]
的例子表明for循环的性能非常相似,实际上您的循环是稍慢的循环之一

为什么由更聪明的人编写的流行图书馆不使用它呢

他们关注好的算法、可读性、可用性、跨浏览器支持(当然还有正确性),而不是微观优化

我是否错过了一些东西,这个循环没有表面上看起来那么好

每次您的
itemsArray
中的一个
项目出现故障时,您的情况都无法达到预期效果

实际上,这也是为什么您的测试说它会快得多的原因,这只是因为它甚至没有像
itemsArray[0]=0
那样进行第一次迭代。一个迭代
[1..1001]
的例子表明for循环的性能非常相似,实际上您的循环是稍慢的循环之一

为什么由更聪明的人编写的流行图书馆不使用它呢


他们关注的是好的算法、可读性、可用性、跨浏览器支持(当然还有正确性),而不是微观优化。

我猜,使用的操作更少。循环中的长度很慢,它也不会检查像i
我猜图书馆不使用这个,因为它不雅观,可读性差,可能会导致上述问题?它不是一个防弹的循环。

我想使用的操作更少。循环中的长度很慢,它也不会检查像i
我猜图书馆不使用这个,因为它不雅观,可读性差,可能会导致上述问题?这不是一个防弹环。

你认为什么是“典型的循环”?为什么要覆盖
?因为聪明得多的人会发现这个bug,而不会使用这个bug代码;-)你认为“典型的循环”是什么?为什么要覆盖
?因为聪明得多的人会发现这个bug,而不会使用这个bug代码;-)谢谢我知道我错过了什么,但我就是看不见。我在其他几个JSPerf中看到过这个循环,它引起了我的兴趣,但我知道这太好了,不可能是真的。谢谢。我知道我错过了什么,但我就是看不见。我在其他几个JSPerf中看到过这个循环,它引起了我的兴趣,但我知道这太好了,不可能是真的。