日期:2014-05-16  浏览次数:20371 次

大量连接字串使用+=快还是join快?
需要对字串反复尾部添加字串, 可能上万次的操作, 有人说, 这种情况应该使用数组, 然后再连接成字串, 但是实测发现, 对Chrome来说: 
var s = "";
for(var i=0;i<10000;i++){
  s += "abc";
}
这样比
var s = "";
var a = Array();
for(var i=0;i<10000;i++){
  a.push("abc");
}
s = a.join("");
要快了不到一倍. 

甚至在头部添加也是一样(s="abc" + s), 而且其它浏览器, Firefox, Opera, IE9 的测试大体也是这样, 至少是差不多, 只有Opera是反过来的, 使用后一种方式快一点.

------解决方案--------------------
我用世界之窗测试,发现数组慢啊,怎么回事呢?
------解决方案--------------------
上次我比较仔细地测试了这个问题,用+在非IE下都是比join快的,而且快的不是一点点,一千万个字符串的操作之下,用+在FF下比Chrome下快一个数量级,IE。。。spiderMonkey对字符串的连接是做了一些特殊的优化的,用join仅仅只是为了考虑IE下的情况,IE下用join确实比+快,这也只是一些个人的理解。