通常我们需要在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("");
哪种方式更好?主要是性能问题,或者可以忽略差异。
答案 0 :(得分:2)
答案 1 :(得分:2)
数组方法更好。
当您连接字符串时,您将为每次迭代将整个前一个字符串复制到一个新字符串。最后,您将复制比结果字符串大小更多的数据。对于每次额外的迭代,您复制的数据量大致翻了一倍,因此它会非常快。
答案 2 :(得分:2)
这远非明确,因为必须支持IE6 / 7的遗产我一直认为数组方法要快得多,但看起来并非如此。
这是一个使用小字符串'a'的测试:
这是一个使用大字符串的测试(lorem ipsum的第一段):
在所有现代浏览器中(我测试过IE9 / Chrome19 / FF12),连接速度更快,使用更长的字符串时速度更快。
重要的是要注意,虽然在IE7中,数组方法 要快得多,所以如果你必须支持(我现在会考虑支持IE7),那么你很可能使用数组方法,因为IE7是如此慢,字符串连接是荒谬的。
实际上,如果你必须支持IE7,我只会避免使用任何类型的重型客户端JS!