我需要用JavaScript构建一个长字符串。这是我尝试的方法:
var html = '<div style="balbalblaba"> </div>';
for(i = 1; i <= 400; i++){
html+=html;
};
当我在火狐浏览器中执行时,它需要很长时间或者导致崩溃。有什么最好的方法来解决这个问题?通常构建JS中大字符串的最佳方法是什么。
有人能帮我吗?
我需要用JavaScript构建一个长字符串。这是我尝试的方法:
var html = '<div style="balbalblaba"> </div>';
for(i = 1; i <= 400; i++){
html+=html;
};
html += html;
。html
字符串长度将会是 37 × 2 的 400 次方 = 9.5 × 10 的 121 次方,超出了任何浏览器、任何计算机、在任何已知的宇宙中所能处理的限制。var res = "";
for (var i = 0; i < 400; ++ i)
res += html;
return res;
或者var res = [];
for (var i = 0; i < 400; ++ i)
res.push(html);
return res.join("");
请查看Repeat String - Javascript以获取更多选项。
[1]: 如同"这个宇宙"。
Array.join
比 +=
更高效。我不知道现在 JS 优化的情况,但使用 .join
构建字符串仍然更好,以适应旧版浏览器。 - kennytm在一些浏览器中(咳咳IE6*咳咳*),字符串拼接速度非常慢。使用数组连接应该比循环拼接要快得多:
var arr = new Array(401);
var html = arr.join('<div style="balbalblaba"> </div>');
new
前缀,只使用 Array(401)
即可。 - JamesArray()
对象视为构造函数来创建数组 :-) - Andy EArray.join('')
。这实际上是构建字符串的Python方式,但它也适用于JavaScript。var src = '<div style="balbalblaba"> </div>';
var html = '';
for(i = 1; i <= 400; i++){
html=+src;
};
你的代码将字符串翻倍了400次。
html=+src
会使 html
等于0。 - Gabe