模板字面量是解决拼接变量、换行、嵌入表达式及引号嵌套问题的实用工具,非万能替代;多行会保留换行符与缩进空格;插值自动ToString且支持任意表达式但内部报错不静默;静态字符串仍应优先用单/双引号。

模板字面量(``)不是“更高级的字符串”,而是解决特定痛点的实用工具——当你需要拼接变量、换行、嵌入表达式,或避免引号嵌套混乱时,它才真正值得用。
多行字符串写法不等于「支持任意换行」
用 `` 写多行,换行符会原样保留在字符串中(包括缩进空格)。这不是 bug,是设计行为。
- 如果只是想视觉换行但不需要实际换行符,用
+拼接或\n显式控制更可控 - 如果真要保留格式(比如生成 HTML 片段),记得用
.trim()或带标签的模板函数(如String.raw)处理首尾空白 - 缩进空格会被当成字符串内容——
` hello\n world`实际包含两个前导空格
${} 插值比 + 拼接更安全也更易读
插值不是语法糖,它自动调用 ToString,避免 undefined 或 null 拼成 "undefined" 这类隐式转换陷阱。
- 对比:
name + ' is ' + age在name为undefined时得到"undefined is 25";而${name} is ${age}同样会转成"undefined is 25",但你一眼能看出哪里出了问题 - 支持任意表达式:
${items.length > 0 ? 'has items' : 'empty'},不用提前算好变量 - 注意:插值内部报错(如访问
obj?.nonexistent?.prop)会导致整个模板字面量求值失败,不是静默跳过
不要在不需要的地方强行替换单引号/双引号
纯静态字符串(如 'click'、"user_id")用 '' 或 "" 更轻量,V8 对它们有额外优化。
立即学习“Java免费学习笔记(深入)”;
- 引擎对
''和""的解析开销低于``,尤其在大量短字符串场景(如循环内构建 key) - 如果字符串里没有插值、没有换行、没有反斜杠转义需求,
``只是增加视觉噪音 - 团队代码风格统一更重要:别因为“新”就全局替换成模板字面量,尤其是日志、常量、DOM 属性值这类简单字符串
真正容易被忽略的是嵌套模板字面量的可维护性——当一个 `` 里又出现 ${`inner ${x}`},阅读成本陡增。这时候该拆函数,而不是堆语法糖。










