javascript-js 如何高效的拼接字符串

javascript-js 如何高效的拼接字符串

在js里如果这样申明一个字符串

let str = "a"

实际上是申明了一个字符串常量,而如果我们对这个字符串进行拼接

let str = "a" + "b"

实际上是创建了一个新的字符串对象,而原先的“a”字符串对象还留在了堆里,等待GC回收

嗯,可以明确的看出,这样拼接实在不是很高效,特别是拼接次数很多的时候,频繁的创建新对象,丢弃旧对象,频繁的触发GC,js是单线程的,gc的触发也会占用线程,无疑降低了执行效率

js不像java,有stringbuilder这样的东西,但是我们可以通过数组,来实现高效的拼接字符串,在每次拼接的时候,拼接的字符串直接push进来,这样不会频繁的触发gc,频繁的创建销毁对象

先给出两个测试的例子,看看效果

首先是一般的字符串拼接

let str
console.time('test')
for(let i = 0;i < 10000000;i++){
  str += "  "
}
console.timeEnd('test')

打印出来的时间为1682.460ms

接下来是数组拼接

let str = [];
console.time('test')
for(let i = 0;i < 10000000;i++){
  str.push("  ")
}
console.timeEnd('test')

打印出的时间为357.240ms

效果是相当的明显了,拼接的字符串数量越多,差距就越大

当我们需要使用的时候,可以调用js数组的join方法返回一个字符串常量

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值