首页 > 技术文章 > 字符串拼接性能优化

webliu 2015-04-09 23:17 原文

var htmlString = '<div class="container">' + '<ul id="news-list">',
     for (var i = 0; i < NEWS.length; i++) {
          htmlString += '<li><a href="'+NEWS[i].LINK +'">' + NEWS[i].TITLE + '</a></li>';
     }
 htmlString += '</ul></div>';

改为数组,再将其通过join()方法改为字符串,因为字符串一旦创建,它的值不能改变,要改变某变量保存的字符串,首先得销毁原来的字符串,然后再用新的字符串填充变量,因此字符串拼接速度慢,效率低。

var htmlString = '<div class="container">' + '<ul id="news-list">',
elem, array
=[], for (var i = 0,len=NEWS.length;i<len;i++) { elem= '<li><a href="'+NEWS[i].LINK +'">' + NEWS[i].TITLE + '</a></li>'; array.push(elem); } array.join(""); htmlString += '</ul></div>';

再举个例子:请指出以下代码的性能问题,并优化。

 var info="腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。";  
     info +="拍拍网于2005年9月12日上线发布,";  
     info +="2006年3月13日宣布正式运营,";  
     info +="是目前国内第二大电子商务平台。";  
    info=info.split(",");  
     for(var i=0; i<info.length; i++)  
      {  
         alert(info[i]);  
      } 

字符串大的话,则拼接时间会长,效率低。再一个就是优化循环体,避免每次循环都计算一次数组的长度,因此将数组长度付给变量,只在第一次循环时计算。

var array=[],
    info;
array.push("腾讯拍拍网(www.paipai.com)是腾讯旗下知名电子商务网站。");
array.push("拍拍网于2005年9月12日上线发布,");
array.push("2006年3月13日宣布正式运营,");
array.push("是目前国内第二大电子商务平台。");
info=array.join("").split(",");  //数组到字符串再在逗号分隔符处分割成数组
for(var i=0,len=info.length;i<len;i++)  
   {  
      alert(info[i]);  
   } 

 

推荐阅读