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模拟滚动条(横向竖向)
Feb 22 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
Aug 29 Javascript
jQuery中wrapAll()方法用法实例
Jan 16 Javascript
Javascript闭包(Closure)详解
May 05 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
Dec 04 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
vue.js实现条件渲染的实例代码
Jun 22 Javascript
React复制到剪贴板的示例代码
Aug 22 Javascript
mpvue全局引入sass文件的方法步骤
Mar 06 Javascript
AngularJs中$cookies简单用法分析
May 30 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
Jun 20 Javascript
js数组中去除重复值的几种方法
Aug 03 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 学习路线与时间表
2010/02/21 PHP
PHP的SQL注入实现(测试代码安全不错)
2011/02/27 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
CI框架表单验证实例详解
2016/11/21 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
解决在Laravel 中处理OPTIONS请求的问题
2019/10/11 PHP
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
js简单实现Select互换数据的方法
2015/08/17 Javascript
AngularJs  E2E Testing 详解
2016/09/02 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
使用Vue写一个datepicker的示例
2018/01/27 Javascript
小程序封装路由文件和路由方法(5种全解析)
2019/05/26 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
Python迭代和迭代器详解
2016/11/10 Python
学习python的前途 python挣钱
2019/02/27 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
python 输出列表元素实例(以空格/逗号为分隔符)
2019/12/25 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
2020/05/23 Python
浅谈Python协程
2020/06/17 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
高校教师思想汇报
2014/01/11 职场文书
挂职锻炼个人总结
2015/03/05 职场文书
党员干部廉政承诺书
2015/04/28 职场文书
高中英语教学反思范文
2016/03/02 职场文书
详解nodejs内置模块
2021/05/06 NodeJs
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android