作为测试一些代码的副作用,我编写了一个小函数来比较使用array.push方法与直接寻址(array [n] = value)的速度.令我惊讶的是,推送方法通常表现得更快,特别是在Firefox中,有时在Chrome中.只是出于好奇:任何人都有解释吗?您可以在此页面找到测试(单击"数组方法比较")
我很不明白为什么这个测试:
http://jsperf.com/push-method-vs-setting-via-key
显示出来
a.push(Math.random());
Run Code Online (Sandbox Code Playgroud)
比...慢十倍
a[i] = Math.random();
Run Code Online (Sandbox Code Playgroud)
你能解释一下为什么会这样吗?什么魔法"推"使它变得如此之慢?(与其他有效的方法相比,这种方法很慢).
编辑
注意:推送测试是有偏见的.我每次迭代都会增加数组的大小!阅读仔细接受的答案!

arrays ×3
javascript ×3
performance ×2
append ×1
benchmarking ×1
browser ×1
firefox ×1
hashtable ×1