数组方法解决JS字符串连接性能问题有争议

 更新时间:2011年01月12日 22:19:59   作者:  
大多数情况下,加法运算符是首选;如果用户主要使用IE6或7,并且字符串大小较大或数量较多时,那么数组技术就很值得。
1、传统上,字符串连接一直是js中性能最低的操作之一。
var text="Hello";
text+=" World!";
早期浏览器没有对这种运算进行优化。
由于字符串是不可变的,这意味着要创建中间字符串来存储连接的结果。频繁地在后台创建和销毁字符串导制性能异常低下。
2、发现这一点后,开发者们利用数组对象进行优化。
var buffer=[],i=0;
buffer[i++]="Hello";//通过相应索引值添加元素比push方法快
buffer[i++]=" World!";
var text=buffer.join("");
在早期的浏览器中,没有创建和销毁中间字符串,在大量字符串连接情况下,这技术已被证明远快于使用加法方式。
3、如今浏览器对字符串的优化已经改变了字符串相连的局面。
Safari、Opera、Chrome、Firefox和IE8都在使用加法运算符上表现出了更好的性能。但是,IE8之前的版本没有优化,因此数组方法依然有效。
这并不意味着字符串相连时我们要进行浏览器检测。在决定如何连接时要考虑的是字符串的大小和数量。
1)当字符串相对较小(<20字符)且连接数量也较小时(<1000个),所有的浏览器使用加法运算符都能在不到1豪秒内轻松完成连接。
2)增加字符串数量或大小时,IE7中性能会明显下降。
3)字符串大小增加时,Firefox中加法运算符和数组成技巧性能差异会变小。
4)字符串数量增加时,Safari中加法运算符和数组成技巧性能差异会变小。
5)改变字符串数量或大小时,Chrome和Opera中加法运算符一直保持领先优势。
所以,由于在各浏览器下性能不一致,选用技术取决于实际情况和面对的浏览器。
大多数情况下,加法运算符是首选;如果用户主要使用IE6或7,并且字符串大小较大或数量较多时,那么数组技术就很值得。

相关文章

  • js实现扫雷源代码

    js实现扫雷源代码

    这篇文章主要为大家详细介绍了js实现扫雷源代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • ES6中定义类和对象的方法示例

    ES6中定义类和对象的方法示例

    这篇文章主要介绍了ES6中定义类和对象的方法,结合实例形式分析了ES6中类的定义、继承、静态方法、静态属性等相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • javascript函数定义的几种区别小结

    javascript函数定义的几种区别小结

    本篇文章主要是对javascript函数定义的几种区别进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】

    JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】

    本文结合Bootstrap table的父子表和行列调序的用法再来介绍下它稍微高级点的用法。对bootstrap表格组件相关知识感兴趣的朋友一起学习吧
    2016-05-05
  • js代码解密代码

    js代码解密代码

    在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的JAVASCRIPT代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的
    2008-06-06
  • JS实现焦点图轮播效果的方法详解

    JS实现焦点图轮播效果的方法详解

    这篇文章主要介绍了JS实现焦点图轮播效果的方法,结合实例形式详细分析了JS焦点图轮播效果的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • 简介alert()与console.log()的不同

    简介alert()与console.log()的不同

    alert()和console.log()在程序中经常会用到,大家知道他们的区别吗,接下来,通过本文给大家介绍alert()与console.log()的不同,需要的朋友可以参考下
    2015-08-08
  • js当一个变量为函数时 应该注意的一点细节小结

    js当一个变量为函数时 应该注意的一点细节小结

    变量testFun为一个匿名函数,匿名函数返回的一个testFun.init对象(也是一个匿名函数)
    2011-12-12
  • 纯 JS 实现放大缩小拖拽功能(完整代码)

    纯 JS 实现放大缩小拖拽功能(完整代码)

    这篇文章主要介绍了纯js实现放大缩小拖拽功能,文中给大家提到了在开发过程中遇到的一些问题及解决方法,需要的朋友可以参考下
    2019-11-11
  • JS获取子窗口中返回的数据实现方法

    JS获取子窗口中返回的数据实现方法

    下面小编就为大家带来一篇JS获取子窗口中返回的数据实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05

最新评论