关于代码的性能问题

请指出一下代码的性能问题,并经行优化。
   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 lang = "Java";

           lang = lang + "Script";

实现这个操作的过程:1、创建一个能容纳10个字符的新字符串。

                            2、在这个字符串中填充"Java" 和"Script";

                            3、销毁原来的字符串"Java"和"Script";

这个过程是在后台发生的,而这也是在某些旧版本的浏览器(IE、版本低于1.0的firefox)中拼接字符串时速度比较慢的原因所在。

 

优化:1、由于字符串相加比较慢,所以可以考虑直接把所有字符写在同一个变量中。

         2、仔细考虑这段JS需要实现的功能,会发现,其实完全可以用一个数组来存储,然后遍历数组输出,这样效率会提高很多,因为省去了info=info.split(",");执行所要消耗   的时间。

         优化结果如下

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

posted @ 2012-03-12 21:40  纳爱斯  阅读(844)  评论(0编辑  收藏  举报