Fastest way to build an HTML string(拼装html字符串的最快方法)


Posted in Javascript onAugust 20, 2011

Fastest way to build an HTML stringPosted in 'Code Snippets, JavaScript' by James on May 29th, 2009
原文:http://james.padolsey.com/javascript/fastest-way-to-build-an-html-string/

var arr = ['item 1', 'item 2', 'item 3', ...], 
list = ''; 
for (var i = 0, l = arr.length; i < l; i++) { 
list += '<li>' + arr + '</li>'; 
} 
list = '<ul>' + list + '</ul>';//最低效的方式。 
var arr = ['item 1', 'item 2', 'item 3', ...], list = [];for (var i = 0, l = arr.length; i < l; i++) { list[list.length] = '<li>' + arr + '</li>';}list = '<ul>' + list.join('') + '</ul>';;//比上一种的方式快。 var arr = ['item 1', 'item 2', 'item 3', ...];var list = '<ul><li>' + arr.join('</li><li>') + '</li></ul>';//最优的方式。

执行1000 次:"String concat"
(ms)
"Array pushing"
(ms)
"Native join()"
(ms)
Firefox 314714865Opera 917212578IE 7500229779Chrome 2638872Safari 4b14614160Averages20555970
只有chrome比较特别,第一种方法反而是最快的。

中文翻译版本
第一种:逐个字符串相加

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>';

使用原生的方法(比如 join()),不管它后面是怎么实现的,一般都比其他方法快很多,而且代码非常简洁。

使用原生的方法(比如 join()),不管它后面是怎么实现的,一般都比其他方法快很多,而且代码非常简洁。

浏览器性能

每种方法是使用一个长度为 130 的数组来测试,其中每个元素的长度是多种多样的,防止浏览器对一定长度的字符串做特殊的优化;每种方法测试了 1000 次;下面的结果显示,执行完这 1000 次需要的时间:

Fastest way to build an HTML string(拼装html字符串的最快方法)

Javascript 相关文章推荐
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 Javascript
JQuery Easyui Tree的oncheck事件实现代码
May 28 Javascript
让ie运行js时提示允许阻止内容运行的解决方法
Oct 24 Javascript
js监听键盘事件示例代码
Jul 26 Javascript
js实现的类似于asp数据字典的数据类型代码实例
Sep 03 Javascript
javascript中局部变量和全局变量的区别详解
Feb 27 Javascript
Flash图片上传组件 swfupload使用指南
Mar 14 Javascript
完美实现仿QQ空间评论回复特效
May 06 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
Jul 27 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
jQuery实现查找链接文字替换属性的方法
Jun 27 Javascript
JS限制条件补全问题实例分析
Dec 16 Javascript
jQuery最佳实践完整篇
Aug 20 #Javascript
jQuery的deferred对象使用详解
Aug 20 #Javascript
优化innerHTML操作(提高代码执行效率)
Aug 20 #Javascript
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 #Javascript
兼容IE和Firefox的javascript获取iframe文档内容的函数
Aug 15 #Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
Aug 15 #Javascript
理清apply(),call()的区别和关系
Aug 14 #Javascript
You might like
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
CI框架集成Smarty的方法分析
2016/05/17 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
推荐dojo学习笔记
2007/03/24 Javascript
iframe 上下滚动条如何默认在下方实现原理
2012/12/10 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
详解用node-images 打造简易图片服务器
2017/05/08 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
在 React、Vue项目中使用SVG的方法
2018/02/09 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
angular4 共享服务在多个组件中数据通信的示例
2018/03/30 Javascript
vue elementUI使用tabs与导航栏联动
2019/06/21 Javascript
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
python re模块findall()函数实例解析
2018/01/19 Python
基于Django用户认证系统详解
2018/02/21 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
Python递归实现打印多重列表代码
2020/02/27 Python
深入解读CSS3中transform变换模型的渲染
2016/05/27 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
教师评优的个人自我评价分享
2013/09/19 职场文书
计算机应用专业学生的自我评价分享
2013/11/03 职场文书
电力公司个人求职信范文
2014/02/04 职场文书
建设工地安全标语
2014/06/07 职场文书
2014年残联工作总结
2014/11/21 职场文书
党课主持词大全
2015/06/30 职场文书
《花钟》教学反思
2016/02/17 职场文书
七年级作文之下雨天
2019/12/23 职场文书
PyQt5 QThread倒计时功能的实现代码
2021/04/02 Python
Python基础之字符串格式化详解
2021/04/21 Python