在Javascript,字符串连接或数组中哪种方式更好?

时间:2012-06-26 07:13:25

标签: javascript

  

可能重复:
  Why is string concatenation faster than array join?

通常我们需要在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("");

哪种方式更好?主要是性能问题,或者可以忽略差异。

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

数组方法更好。

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

答案 2 :(得分:2)

这远非明确,因为必须支持IE6 / 7的遗产我一直认为数组方法要快得多,但看起来并非如此。

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

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

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

重要的是要注意,虽然在IE7中,数组方法 要快得多,所以如果你必须支持(我现在会考虑支持IE7),那么你很可能使用数组方法,因为IE7是如此慢,字符串连接是荒谬的。

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