这里有一个关于jsperf的测试:
http://jsperf.com/javascript-array-concat-vs-push它显示concat更快,但如果你在初始数组中得到了这个结果,而不使用第三个变量,那么concat会慢得多,非常慢:
for (i = 10000; i > 0; i--) {
arr1 = arr1.concat(arr2);
}
即使您使用相同名称的本地变量,结果也是相同的:
for (i = 10000; i > 0; i--) {
var arr1 = arr1.concat(arr2);
}
有人能解释一下这是什么意思吗?
concat
测试将结果放入一个新变量中,因此它只是多次连接相同的两个数组。push
测试修改了其中一个原始数组,因此它在每次测试迭代中都会不断增长。你的concat
测试就像基准测试中的push
测试,因为你正在将结果保存在arr1
中。这就是为什么性能类似于push
基准测试的原因。 - Barmar