如何构造一个长字符串

meo*_*meo 3 javascript

我需要用javascript构造一个长字符串.多数民众赞成我试图这样做:

var html = '<div style="balbalblaba">&nbsp;</div>';
for(i = 1; i <= 400; i++){
   html+=html;
};
Run Code Online (Sandbox Code Playgroud)

当我在firefox中执行它时,它会花费很长时间或者让它崩溃.最好的方法是什么?通常什么是在JS中构造大字符串的最佳方法.

有人能帮我吗?

ken*_*ytm 12

我猜你的意思html += html;.

如果你这样做,你的html字符串的长度将是37×2 400 = 9.5×10 121,超出任何浏览器的限制,在任何[1]已知宇宙可以处理的任何计算机上.

如果您只想重复该字符串400次,请使用

var res = "";
for (var i = 0; i < 400; ++ i)
   res += html;
return res;
Run Code Online (Sandbox Code Playgroud)

要么

var res = [];
for (var i = 0; i < 400; ++ i)
   res.push(html);
return res.join("");
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅重复字符串 - Javascript.


[1]:与"这个宇宙"一样.


And*_*y E 6

在某些浏览器中,字符串连接非常慢(咳嗽 IE6*咳嗽*).加入数组应该比使用连接循环快得多:

var arr = new Array(401);
var html = arr.join('<div style="balbalblaba">&nbsp;</div>');
Run Code Online (Sandbox Code Playgroud)

  • @JP:你可以,但是行为是完全一样的,我通常喜欢在用它创建数组时将`Array()`对象当作构造函数:-) (2认同)