空城机 2021-05-19 21:51 采纳率: 66.7%
浏览 41
已采纳

JavaScript 字符串操作性能问题

很好奇,高性能JavaScript书中说 str += "one" + "two" 效率比 str = str + "one" + "two" 低

但是我实际循环多次操作后,发现str += "one" + "two"速度更快,是我使用的测试代码不准确吗?

测试代码:

(function () {
    var str = '';
    console.time('str += "one" + "two"')
    for (var i = 0; i < 10000000; i++) {
        str += 'one' + 'two';
    }
    console.timeEnd('str += "one" + "two"')
})();
(function () {
    var atr = '';
    console.time('atr = atr + "one" + "two"')
    for (var i = 0; i < 10000000; i++) {
        atr = atr + 'one' + 'two';
    }
    console.timeEnd('atr = atr + "one" + "two"')
})()

chrome浏览器:

IE浏览器:

火狐浏览器:

 

 

  • 写回答

2条回答 默认 最新

  • iMingzhen 2021-05-20 10:42
    关注

    很有意思的问题

    可惜MDN查不到相关区别

    都是说 a += b mean a = a + b

     

    经过数次尝试,也加大了循环的次数,在chrome环境下

    字符串:a+=b性能优于 a = a + b

    整型: 性能一致

     

    可能这种测试方式也不够可观,仅这个测试用例下是这个结果

     

    如果有空可以再翻下ecma看看有没有相关内容

    相关文档:

    ECMAScript® 2022 Language Specification 

    https://tc39.es/ecma262/

     

    如有帮助请采纳回答 谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?