javascript中字符串拼接需注意的问题


Posted in Javascript onJuly 13, 2010

在开发中大家也都会注意尽量使用StringBuilder而不采用普通的字符串拼接方式。但是可能大部分开发者却忽略了js中也需要注意这种效率问题。
下面进行一项性能测试,用事实来说话!

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 StringBuilder(); 
for(var i=0;i<10000;i++){ 
sb.append("stext"); 
} 
var result=sb.toString(); 
d2=new Date(); 
document.write("数组方式耗时:"+(d2.getTime()- d1.getTime())+"毫秒;"); 
} 
/////利用Array实现的字符串拼接函数,为方便c#开发者特意取名StringBuilde以便于理解 
function StringBuilder(){ 
this._strings_=new Array; 
} 
StringBuilder.prototype.append=function(str){ 
this._strings_.push(str); 
}; 
StringBuilder.prototype.toString=function(){ 
return this._strings_.join(""); 
};

三次执行 xntest()函数后的结果为:

字符串拼接方式耗时:735毫秒;数组方式耗时:62毫秒;
字符串拼接方式耗时:766毫秒;数组方式耗时:63毫秒;
字符串拼接方式耗时:703毫秒;数组方式耗时:63毫秒;

此例是拼接10000次字符串的性能测试,相信结果大家有目共睹,有兴趣的朋友可以自己测试一下。
所以 ,在前台开发中我们也应尽量避免大规模的字符串拼接操作,应采用数组方式来合理提高代码效率。

Javascript 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
Javascript remove 自定义数组删除方法
Oct 20 Javascript
JS 数字转换研究总结
Dec 26 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
Apr 29 Javascript
基于JavaScript实现鼠标悬浮弹出跟随鼠标移动的带箭头的信息层
Jan 18 Javascript
Bootstrap零基础学习第一课之模板
Jul 18 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
使用JavaScript获取URL中的参数(两种方法)
Nov 16 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
解决js中的setInterval清空定时器不管用问题
Nov 17 Javascript
处理canvas绘制图片模糊问题
May 11 Javascript
转换json格式的日期为Javascript对象的函数
Jul 13 #Javascript
Jquery+WebService 校验账号是否已被注册的代码
Jul 12 #Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 #Javascript
不同浏览器的怪癖小结
Jul 11 #Javascript
return false;和e.preventDefault();的区别
Jul 11 #Javascript
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 #Javascript
js 模拟气泡屏保效果代码
Jul 10 #Javascript
You might like
PHP中的生成XML文件的4种方法分享
2012/10/06 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
一段实用的php验证码函数
2016/05/19 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
Dom加载让图片加载完再执行的脚本代码
2008/05/15 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
Jquery全屏相册插件zoomvisualizer具有调节放大与缩小功能
2015/11/02 Javascript
javascript 中的console.log和弹出窗口alert
2016/08/30 Javascript
jquery append与appendTo方法比较
2017/05/24 jQuery
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
Vuex的热更替如何实现
2020/06/05 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
Python判断字符串与大小写转换
2015/06/08 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
教你用Python写安卓游戏外挂
2018/01/11 Python
python动态视频下载器的实现方法
2019/09/16 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
canvas绘制太极图的实现示例
2020/04/29 HTML / CSS
FitFlop美国官网:英国符合人体工学的鞋类品牌
2018/10/05 全球购物
司马光教学反思
2014/02/01 职场文书
2014党委书记四风问题对照检查材料思想汇报
2014/09/22 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python