JavaScript中String是基本类型,模板字符串是ES6用反引号实现的增强语法,支持变量嵌入、多行书写和表达式计算,大幅提升字符串操作便捷性。

JavaScript 中的 String 类型是基本数据类型,用于表示文本;而模板字符串(Template Literal)是 ES6 引入的增强语法,用反引号 ` 包裹,支持变量嵌入、多行书写和表达式计算,大幅简化了字符串操作。
String 基础语法与创建方式
字符串可用单引号 ' '、双引号 " " 或反引号 ` ` 创建。前两者用于普通字符串,后者专用于模板字符串。
- 字面量创建最常用:
let name = '张三';或let msg = "Hello"; - 引号嵌套时可避免转义:例如
"He said 'Hi'."或'She replied "OK".' - 含特殊字符需转义:如
"Line 1 Line 2"中的表示换行,"表示双引号本身 -
String构造函数不推荐日常使用:new String("hello")返回的是包装对象,易引发类型判断问题
模板字符串的核心写法
模板字符串必须用反引号 ` ` 包裹,内部用 ${...} 插入变量或任意合法 JavaScript 表达式。
- 嵌入变量:
let user = '李四'; let greeting = `你好,${user}!`; - 嵌入表达式:
let a = 3; let b = 7; let text = `和为:${a + b},平方和为:${a**2 + b**2}`; - 调用函数:
let now = `当前时间:${new Date().toLocaleTimeString()}`; - 三元运算:
let status = `状态:${age >= 18 ? '成人' : '未成年'}`;
多行字符串与格式保留
模板字符串天然支持换行和空白符,无需
或拼接,适合生成 HTML、SQL 或配置文本。
立即学习“Java免费学习笔记(深入)”;
- 直接换行即可:
let html = `<div class="card"> <h3>Title</h3> <p>Content</p> </div>`; - 缩进会被原样保留(包括空格和制表符),若需去除首尾换行或缩进,可手动 trim 或使用工具函数
- 对比传统写法:
"<div class='"card"'> <h3>Title</h3> <p>Content</p> </div>"更易出错且难维护
标签模板与高级用法
在反引号前加函数名,可将模板字符串交由自定义函数处理,称为“标签模板”。
- 函数接收两个参数:静态字符串数组
strings和动态值数组values - 例如实现 HTML 转义:
function escape(strings, ...values) { /* 处理每个 values 并拼接 strings */ } - 调用:
escape`<p>${user}</p>`—— 可防止 XSS,比手动 replace 更安全可控 - 常见内置标签:
String.raw`\n`返回原始字符串(不解析转义符),输出"\n"而非换行
注意事项与避坑点
模板字符串强大但有边界,实际使用中需留意环境兼容性和语法冲突。
- 浏览器兼容性:IE 完全不支持,现代项目需确认目标环境(Node.js 从 v4+ 支持)
- JSP 等服务端模板引擎会把
${}当作 EL 表达式解析,此时必须写成${}转义 -
${}内部不能直接写语句(如if),只能是表达式;复杂逻辑建议提取到变量或函数中 - 性能差异极小,无需为简单拼接刻意回避;可读性和可维护性提升才是主要价值


















