目前看来字符串连接速度更快:http://jsperf.com/es6-string-literals-vs-string-concatenation
ES6 with variable 19,992,512 ±5.21% 78% slower
String concatenation with variable 89,791,408 ±2.15% fastest
ES6 with function 461,358 ±3.12% 99% slower
String concatenation with function 503,255 ±1.77% 99% slower
我测试的是在 Chrome 43.0.2334.0 canary(64 位)上运行,它使用 V8 4.3.31,#enable-javascript-harmony
标志已启用。
作为参考,Node.js 的最新版本(撰写本文时为 0.12.0)使用的是 V8 3.28.73:https://raw.githubusercontent.com/joyent/node/master/ChangeLog
我确信所有可能应用的性能优化尚未应用,因此随着 ES6 接近最终确定并且这些功能迁移到稳定分支,预期性能会变得更好是合理的。
Edit: 感谢 @user1329482、@icl7126、Nicolai Borisik 和 FesterCluck 的评论。现在距离这个问题提出已经过去了大约 2 年,ES6 浏览器支持已经大大增加,并且已经进行了大量的性能优化。以下是一些更新.
编辑:(2020 年 2 月)根据 @JorgeFuentesGonzález 评论和后续确认更新了 Chrome 结果.
在 Chrome 中(截至 59.0.3035),ES6 字符串字面量更快:
ES6 with variable 48,161,401 ±1.07% fastest
String concatenation with variable 27,046,298 ±0.48% 44% slower
ES6 with function 820,441 ±1.10% 98% slower
String concatenation with function 807,088 ±1.08% 98% slower
更新:在 Chrome 中(截至 79.0.3945),字符串连接速度更快... 看评论。
在 Firefox 中(从 57.0.0 开始),ES6 字符串字面量更快:
ES6 with variable 1,924,610,984 ±0.50% fastest
String concatenation with variable 1,876,993,458 ±0.79% 3% slower
ES6 with function 539,762 ±5.04% 100% slower
String concatenation with function 546,030 ±5.88% 100% slower
在 Safari 中(自 11.0.2 起),这取决于:
ES6 with variable 1,382,752,744 ±0.71% fastest
String concatenation with variable 1,355,512,037 ±0.70% 2% slower
ES6 with function 876,516 ±1.01% 100% slower
String concatenation with function 883,370 ±0.79% 100% slower
当使用类型转换字符串时,ES6 字符串字面量更快。但是,当从文字调用函数时,字符串连接速度更快在这个例子中。
如果您确实想深入了解并需要充分利用 Safari 的每一点性能下降,我建议您设置测试来查看是否/如何在字面效果性能中输入错误的变量和多个引用。