例如
对于这种长时间操作,有没有更好的方法来处理呢?也许可以使用StringBuffer这样的结构?谢谢! :)
var myName = 'Bob';
myName += ' is a good name';
对于这种长时间操作,有没有更好的方法来处理呢?也许可以使用StringBuffer这样的结构?谢谢! :)
var myName = 'Bob';
myName += ' is a good name';
var nameparts= ['Bob'];
nameparts.push(' is a good name');
...
nameparts.join('');
然而,大多数现代JavaScript实现现在都可以检测到简单的连接,并且在许多情况下可以优化掉它,因为很多人(遗憾地)以这种方式编写代码。因此,在实践中,“好”的方法今天不会比过去快得多。
字符串拼接的效率取决于您使用的浏览器。您可以在谷歌上搜索统计数据,YouTube 上也有 GoogleTalk。据我所知,大多数浏览器在元素数量低于几千个时都能有效地处理字符串拼接。此后,IE 的速度会呈指数级下降,而 Firefox、Chrome 和 Safari 的表现要好得多。随着 IE9 的推出,这种情况可能会发生改变。
我曾经读过一篇关于这个主题的文章,其中提供了一些用数组构建缓冲字符串的代码:
http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation
我亲自测试过,它在IE中运行速度要快得多...而在Firefox中则慢得多!
总之:有很多JavaScript引擎存在,我们不能真正依赖这种实现细节。如果这是一个问题,你会注意到的。在那之前,不要太在意。