function xntest(){
var d1=new date();
var str="";
for(var i=0;i<10000;i++){
str+="stext";
}
var d2=new date();
document.write(" 字符串拼接方式耗时:"+(d2.gettime()- d1.gettime())+"毫秒;");
d1=new date();
var sb=new array();
for(var i=0;i<10000;i++){
sb.push("stext");
}
var result=sb.tostring();
d2=new date();
document.write(" 数组方式耗时:"+(d2.gettime()- d1.gettime())+"毫秒;");
}
下面看简介应用
每次完成字符串连接都会执行步骤2到6,使得这种操作非常消耗资源。如果重复这一过程几百次,甚至几千次,就会造成性能问题。解决方法是用array对象存储字符串,然后用join()方法(参数是空字符串)创建最后的字符串。想像用下面的代码代替前面的代码:
复制代码 代码如下:
var str=new array();
str[0]="hello";
str[1]="world";
str.join("");
这样,无论在数组中引入多少字符串都不成问题,因为只在调用join()方法时才会发生连接操作。此时,执行的步骤如下:
(1) 创建存储结果的字符串。
(2) 把每个字符串复制到结果中的合适位置。
复制代码 代码如下:
function stringbuilder(){
this._string=new array();
}
stringbuilder.prototype.append=function(str){
this._string.push(str);
}
stringbuilder.prototype.tostring=function(){
return this._string.join("");
}
符串拼接的最快方法
第一种:逐个字符串相加
复制代码 代码如下:
var arr = ['item 1', 'item 2', 'item 3', ...],
list = '';
for (var i = 0, l = arr.length; i < l; i++) {
list += '<li>' + arr[i] + '';
}
list = '<ul>' + list + '</ul>';
这种最常见的,但是效率最低!代码逻辑相对来说复杂。
第二种:逐个 push 进数组
复制代码 代码如下:
var arr = ['item 1', 'item 2', 'item 3', ...],
list = [];
for (var i = 0, l = arr.length; i < l; i++) {
list[list.length] = '<li>' + arr[i] + '';
}
list = '<ul>' + list.join('') + '</ul>';
比上一种方法稍微快一些,但还是不够好…
第三种:直接join()
复制代码 代码如下:
var arr = ['item 1', 'item 2', 'item 3', ...];
var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';
最后看看字符串联连时注意事项
尽量使用stringbuilder而不采用普通的字符串拼接方式。但是可能大部分开发者却忽略了js中也需要注意这种效率问题