You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中字符串拼接的时间复杂度是多少?两种拼接方式哪个更优?

JavaScript字符串拼接方法对比与时间复杂度说明

时间复杂度结论

无论是使用+运算符,还是调用String.prototype.concat方法,单次拼接两个字符串的时间复杂度均为O(n + m),其中n为第一个字符串的长度,m为第二个字符串的长度。
因为JavaScript中的字符串属于不可变基础类型,两种拼接方式的底层逻辑一致:都需要先申请一块可容纳两个字符串总长度的新内存空间,再将两个原始字符串的内容逐一拷贝到新内存中,最终返回新字符串的引用,不存在时间复杂度层面的差异。

两种方法的优劣对比

  • 常规双字符串拼接场景下,两者性能几乎没有差异,现代JS引擎(如V8、SpiderMonkey)对+运算符做了大量底层优化,连续拼接场景下性能表现甚至略优于concat,且+写法更简洁,可读性更高,更推荐日常使用。
  • concat的独有优势是支持一次性传入多个字符串参数完成拼接,比如str1.concat(str2, str3, str4),可以减少多次中间拼接的内存分配和拷贝开销,多字符串合并场景下可以按需选用。
  • 两者的隐式类型转换逻辑一致,都会自动将非字符串类型的操作数/参数转换为字符串后再拼接,该场景下没有表现差异。
  • 如果是循环拼接大量字符串的场景,两种方法都不推荐,建议优先使用数组join方法或ES6模板字符串,可将整体时间复杂度优化到接近O(n)(n为最终字符串总长度)。

你给出的示例代码中,两种写法的实现效果完全一致:

function concatString(str1, str2) {
  // return str1 + str2;
  // return str1.concat(str2)
}

内容的提问来源于stack exchange,提问作者Yevheniy Holubiev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:57:03