JavaScript字符串拼接首选模板字符串,因其可读性强、支持多行和表达式插值;加号适用于静态短串但易出错;join()适合数组动态拼接且性能稳定。

在 JavaScript 中,字符串拼接有三种主流方式:加号(+)、数组 join() 和模板字符串(`...`)。它们适用场景不同,性能、可读性和灵活性各有侧重。
加号拼接:简单直接,但易出错且低效
适用于少量、静态字符串的连接,比如 "Hello" + name + "!"。但拼接次数多时,会产生大量中间字符串对象(JS 字符串不可变),内存和性能开销明显。另外,类型隐式转换容易埋坑——1 + 2 + "3" 得到 "33",而 "3" + 1 + 2 是 "312"。
- 避免在循环中用
+=拼接大量文本 - 注意操作数顺序,防止意外的数字相加或字符串强制转换
- 不适合多行或含复杂表达式的场景
join():适合动态列表拼接,性能稳定
当数据来自数组(如用户列表、参数集合)时,arr.join(separator) 是最高效的选择。它只创建一次最终字符串,底层优化成熟,尤其在大数据量下优势明显。例如:["a", "b", "c"].join("-") → "a-b-c"。
- 先收集所有片段到数组,再一次性拼接,逻辑清晰
- 天然支持空值处理(
undefined和null转为空字符串) - 若需条件拼接,推荐先
filter()再join(),比反复判断加号更简洁
模板字符串:现代首选,兼顾可读性与表达力
用反引号定义,支持嵌入表达式(${...})、多行和原生换行。它不是“拼接工具”,而是字符串构造语法,语义更准确。例如:
立即学习“Java免费学习笔记(深入)”;
`User ${user.name} logged in at ${new Date().toLocaleTimeString()}`
- 变量插值清晰,无类型转换歧义
- 支持标签函数,可实现转义、国际化、SQL 构建等高级功能
- 性能接近加号(V8 引擎已深度优化),开发体验远超其他两种
怎么选?看场景
静态短串 → 加号够用;动态数组 → join() 更稳;含变量、逻辑或需要可维护性 → 模板字符串是默认选择。现代项目中,模板字符串已覆盖绝大多数拼接需求,加号仅保留在极简上下文(如 "loading" + i 这类计数提示),join() 则专注数组结构化输出。


















