JavaScript模板字符串默认原样保留换行符和空格,因其语法设计采用反引号包裹,实现“所见即所得”;回车、缩进、首尾换行均直接转为对应\n和空格字符,无需转义。

JavaScript 模板字符串默认就原样保留多行文本、换行符和所有空格(包括缩进),这是它的天然行为,不需要额外设置。
为什么能原样保留?
模板字符串用反引号 ` 包裹,语法设计上就支持“所见即所得”:你在编辑器里怎么换行、怎么缩进,最终生成的字符串里就包含对应的 \n 和空格字符。
- 回车(
\n)会被直接保留,不需写\n转义 - 行首缩进的空格、Tab、中间多余空格,全部照搬
- 开头和结尾的换行也会保留——比如第一行前面或最后一行后面有回车,字符串里就有
常见场景与注意事项
虽然保留是默认行为,但实际使用中容易因格式美观而引入意外空白,尤其在拼接 HTML 或生成 JSON 时:
-
HTML 片段示例:
const html = `\n`;Hello
\n
这个字符串开头有换行,前有 0 个空格,但前有 2 个空格——全都会出现在最终 HTML 中
java-api-doc-generator下载分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 避免首尾多余换行:如果不想开头/结尾带换行,把反引号紧贴内容写:
const text = `第一行\n第二行`; // 开头无换行,结尾无换行- 想清理多余空白?用
.trim():const clean = `\n`.trim();text
\n
它会去掉首尾空白(含换行+空格),但不会动中间的缩进需要自动处理缩进怎么办?
如果模板字符串缩进只是为了代码可读,但不希望这些空格进入运行结果(比如生成干净的 JSON 或 CLI 输出),可以:
- 手动调用
.replace(/\s+$/gm, '').replace(/^\s+/gm, '')清理每行首尾空格(较重) - 用
.split('\n').map(line => line.trim()).join('\n')行级清理 - 更推荐:引入轻量工具函数如
stripIndent(来自common-tags或自定义),它会分析首行缩进量并统一去除
特殊字符转义要点
想在模板字符串里输出字面量
${...}或反引号本身,得转义:- 输出
${foo}字面量 → 写成\${foo} - 输出反引号
`→ 写成\` - 注意:
${}里的表达式仍会执行,哪怕外面用了转义
- 避免首尾多余换行:如果不想开头/结尾带换行,把反引号紧贴内容写:
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










