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