我正在考虑使用本机方法创建包含默认值的数组的方法,最终得到
function pushMap(length, fill){
var a = [], b = [];
a.length = length;
b.push.apply(b,a);
return b.map(function(){return fill;});
}
期望它比 while 循环慢2或3倍,因为本机方法必须循环两次,而 while 只循环一次,所以我在jsperf 上将其与
function whileLengthNew(len, val) {
var rv = new Array(len);
while (--len >= 0) {
rv[len] = val;
}
return rv;
}
它实际上慢了18到27倍(在 Ubuntu 上使用 Google Chrome 进行测试,欢迎使用浏览器/操作系统)。
是什么导致了如此大的差异?