javascript模板字符串是什么_它如何方便地拼接字符串【教程】
技术百科
狼影
发布时间:2026-01-28
浏览: 次 模板字符串是支持多行、嵌入表达式、无需转义的字符串字面量,用反引号定义,${...}中可放任意表达式但非语句,天然支持换行但需注意缩进,结合标签函数可扩展功能。
JavaScript 模板字符串不是“更高级的字符串拼接”,而是支持多行、嵌入表达式、无需转义的字符串字面量——它解决的是传统字符串在可读性、维护性和表达能力上的硬伤。
模板字符串用 `(反引号)而不是 ' 或 "
这是最基础但最容易忽略的点:写成 "Hello $ 不会生效,必须是 
`Hello ${name}`。浏览器或 Node.js 遇到单双引号里的 ${...} 会当作普通文本,不会解析为插值。
- ✅ 正确:
`Hello ${user.name}` - ❌ 错误:
"Hello ${user.name}"(输出就是字面量Hello ${user.name}) - ⚠️ 注意:
`在英文键盘是 Esc 下方、Tab 上方那个键,不是单引号
${...} 里可以放任意 JavaScript 表达式,不只是变量
它不是“变量占位符”,而是运行时求值的表达式容器。这意味着你可以直接调用函数、做运算、访问属性链,甚至写三元表达式。
-
`Price: $${(price * 1.1).toFixed(2)}`—— 计算 + 格式化一步到位 -
`Status: ${isActive ? 'Online' : 'Offline'}`—— 内联条件逻辑 -
`ID: ${data?.id ?? 'unknown'}`—— 支持可选链和空值合并 - ⚠️ 注意:不能放语句(如
if、for),只接受表达式
多行字符串天然支持,但缩进会原样保留
换行符会被保留在最终字符串中,所以直接写会多出大量空格和制表符,影响 JSON 输出或 DOM 渲染。
- ✅ 清晰写法:
`Line 1 Line 2 Line 3`
- ⚠️ 常见坑:
const html = `
——开头换行和缩进都会变成字符串的一部分Hello
`; - ? 补救方式:用
.trim()或模板字符串内手动换行+字符串连接,例如:`` + `Hello
` + ``
标签函数让模板字符串具备“处理逻辑”的能力
模板字符串本身只是语法糖,但加上前缀函数(如 html`...`、sql`...`),就能实现自动转义、语法校验、甚至编译优化。
- 常见用例:
String.raw`C:\temp\notes.txt`—— 避免反斜杠被解释为转义 - 自定义标签示例:
function upper(strings, ...values) { return strings[0] + values.map(v => String(v).toUpperCase()).join('') + strings[1]; } upper`hello ${'world'}`; // → "hello WORLD" - ⚠️ 注意:标签函数第一个参数是字符串数组(静态部分),后续才是插值结果;不要漏掉对
strings的处理
真正容易被忽略的是嵌套模板字符串的可读性——当 ${...} 里又出现模板字符串时,反引号层级一多,眼睛就容易看错边界。这时候宁可拆成变量,也别硬塞三层 `...${`...${...}`...}`...。
# 浏览器
# js
# json
# javascript
# java
# String
# if
# html
# 字符串
# node
# for
# sql
# node.js
# 字符串数组
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Go 语言标准库为何不提供泛型 Contains
- Windows10怎样设置家长控制_Windows
- Windows怎样关闭锁屏广告_Windows关闭
- Win11怎么查看硬盘型号_Windows 11检
- Win11如何卸载OneDrive_Win11卸载
- Win11怎么查看激活状态_查询Windows 1
- XSLT怎么生成动态的HTML属性名和标签名
- 跨文件调用类方法怎么用_php作用域操作符与自动加
- Windows7怎么找回经典开始菜单_Window
- windows如何备份注册表_windows导出和
- Win10路由器怎么隐藏ssid Win10隐藏w
- Win11怎么设置任务栏对齐方式_Windows1
- Win11怎么关闭触摸键盘图标_Windows11
- 如何在 Go 中正确反序列化 XML 多节点数组(
- 如何在 Django 中修改用户密码后保持会话不丢
- 如何使用Golang实现跨域请求支持_Golang
- 如何使用Golang table-driven f
- Windows10系统怎么查看CPU温度_Win1
- Win11如何连接Xbox手柄 Win11蓝牙连接
- Mac的Time Machine怎么用_Mac系统
- Win10系统怎么查看显卡温度_Win10任务管理
- Python对象生命周期管理_创建销毁解析【教程】
- php下载安装包怎么选_threadsafe与nt
- Python爬虫项目实战教程_Scrapy抓取与存
- Win10怎样清理C盘浏览器缓存_Win10清理浏
- C#如何使用XPathNavigator高效查询X
- Win11怎么修复系统文件_使用sfc命令修复Wi
- Windows10系统怎么查看运行时间_Win10
- Windows10系统更新错误0x80070002
- Win11资源管理器卡顿怎么办 Win11文件资源
- Windows家庭版如何开启组策略(gpedit.
- Windows电脑如何截屏?(四种快捷方法)
- 如何使用Golang指针与接口结合_实现方法调用和
- 如何使用Golang实现容器自动化运维_Golan
- 如何使用Golang sync.Map实现并发安全
- Win11如何开启telnet服务 Win11启用
- Windows10任务栏图标变成白色文件_Win1
- Win11怎么更改账户头像_Windows 11自
- Win11怎么打开旧版计算器_Win11恢复传统计
- phpstudy本地环境mysql忘记密码_重置m
- Windows 11如何开启文件夹加密(EFS)_
- Python字符串处理进阶_切片方法解析【指导】
- Win11如何设置系统语言_Win11系统语言切换
- 如何使用Golang实现容器安全扫描_Golang
- 如何在Golang中使用内置函数_Golangle
- Win11任务栏怎么固定应用 Win11将软件图标
- Mac的“调度中心”与“空间”怎么用_Mac多桌面
- php下载安装包太大怎么下载_分卷压缩下载方法【教
- Win11怎么设置默认浏览器Chrome_Wind
- 如何使用Golang包导出规则_控制函数和变量可见

QQ客服