如
var myName = 'Bob';
myName += ' is a good name';
对于长期操作,它有更好的方法吗?也许使用StringBuffer类型的结构?
谢谢! :)
答案 0 :(得分:5)
'更好'的方式是:
var nameparts= ['Bob'];
nameparts.push(' is a good name');
...
nameparts.join('');
然而,大多数现代JavaScript实现现在都会检测到天真的连接,并且在很多情况下可以优化它,因为很多人都有这样的编写代码(唉)。因此,在实践中,“好”的方法今天不会像以前那样快。
答案 1 :(得分:1)
只需使用中间字符串即可获得巨大的性能提升!可以在JavaScript中创建类似StringBuffer的类,以获得更高的性能提升。
请参阅完整的文章和图表here。
答案 2 :(得分:1)
字符串连接的效率取决于您使用的浏览器。你可以google进行统计,youtube上还有一个googleTalk。从我记忆中来看,大多数浏览器在元素数量低于几千时有效地处理字符串连接。之后IE以指数速率减速,当firefox,chrome和safari做得更好时。这可能会改变,因为现在IE9并不是那么遥远。
答案 3 :(得分:0)
我曾经读过一篇关于这个主题的文章,它提供了一些用数组构建缓冲字符串的代码:
http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation
我自己进行了测试,在IE中速度更快......在Firefox中速度更慢了!
总结一下:那里有很多JavaScript引擎,我们无法真正依赖这种实现细节。如果这是一个问题,你会发现。在此之前,不要太在意。