模板字符串用反引号定义,支持 ${...} 插入任意合法 JavaScript 表达式,如变量、函数调用、三元运算等;表达式在求值时立即执行,需注意作用域、不可声明变量、不支持 await,推荐简化复杂逻辑。

模板字符串用反引号(`)定义,其中通过 ${...} 插入表达式,括号内可以写任意合法的 JavaScript 表达式,包括变量、函数调用、三元运算、逻辑运算、甚至对象属性访问和数组方法调用。
支持多层嵌套与组合运算
只要最终能求值为一个值,任何表达式都可放入 ${} 中:
-
基础运算:
`${2 + 3 * 4}` → "14" -
三元判断:
`${age >= 18 ? '成年' : '未成年'}` -
函数调用:
`${Math.max(1, 5, 3)}` → "5" -
对象/数组操作:
`${user?.profile?.name || '匿名用户'}` 或 `${items.map(x => x.title).join(', ')}`
注意作用域与执行时机
${} 中的代码在模板字符串求值时立即执行,使用的是当前作用域的变量和函数:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 不能在模板字符串里声明新变量(如
${let x = 1}会报错) - 可以调用外部定义的函数,包括箭头函数:
`${(() => `Hello ${name}`)()}` - 异步操作需提前处理好结果,模板字符串本身不支持 await:
`${data?.length ?? 0} 条记录`(不是${await fetch(...)})
避免常见错误
看似简单,但容易因语法或逻辑出错:
立即学习“Java免费学习笔记(深入)”;
-
不要漏掉美元符号或大括号:写成
`$name`或`{name}`都不会解析为变量值 -
对象属性访问要确保存在:用可选链
?.或空值合并??防止报错,比如`${user?.address?.city ?? '未知'}` -
复杂逻辑建议提取到变量:过度堆砌表达式会降低可读性,例如:
✅ 推荐:const statusText = isActive ? '在线' : isPending ? '待审核' : '已禁用';<br>`状态:${statusText}`
❌ 不推荐:`状态:${isActive ? '在线' : isPending ? '待审核' : '已禁用'}`(嵌套过深时难维护)

















