0

可能重复:
为什么字符串连接比数组连接快?

通常我们需要在Javascript中动态生成html内容。如下两种方式:

var s = "", a = [];
for (var i = 0, l = data.length; i < l; i++) {
  s += "<a href='#'>" + data[i].name + "</a>";
  a[i] = "<a href='#'>" + data[i].name + "</a>";
}
container.innerHTML = s; // or
container.innerHTML = a.join("");

哪种方式更好?主要关注性能,否则差异可以忽略。

4

3 回答 3

2

这回答了您的问题:JavaScript 中的高性能字符串连接

于 2012-06-26T07:16:33.417 回答
2

数组方法更好。

当您连接字符串时,您将在每次迭代时将整个前一个字符串复制到一个新字符串中。最后,您将复制比结果字符串的大小更多的数据。对于每一次额外的迭代,您复制的数据量大约会增加一倍,因此它会变得非常非常快。

于 2012-06-26T07:22:29.180 回答
2

这远非明确,作为必须支持 IE6/7 的遗留问题,我一直认为数组方法要快得多,但事实似乎并非如此。

这是一个使用小字符串 'a' 的测试:

这是一个使用大字符串的测试(lorem ipsum 的第一段):

在所有现代浏览器(我测试过 IE9/Chrome19/FF12)中,连接速度更快,使用更长的字符串时速度更快。

重要的是要注意,虽然在 IE7 中,数组方法快得多,所以如果你必须支持它(我现在会三思而后行支持 IE7),那么你可能应该使用数组方法,因为 IE7 就是这样字符串连接速度慢到可笑。

实际上,如果您必须支持 IE7,我会避免使用任何类型的重型客户端 JS!

于 2012-06-26T08:08:26.610 回答