模板字符串中的表达式求值遵循从左到右的顺序,先计算所有嵌入的 ${} 块,再将结果与周围的字面量拼接成最终的字符串。具体做法是在模板中直接写入 javascript 表达式,引擎会在运行时解析并替换这些表达式。

String.raw() 如何处理转义字符
String.raw() 作为标签函数,会接收模板字符串拆分后的字面量数组和表达式求值结果,它不会处理反斜杠转义,而是直接返回原始的字面量内容。这意味着在 String.raw 处理的模板中,\n 会被视为两个字符而不是换行符。

const name = "Alice";
const age = 30;
// 普通模板字符串
console.log(`Name: ${name}, Age: ${age}`);
// 输出: Name: Alice, Age: 30
// String.raw 模板字符串
console.log(String.raw`Name: ${name}, Age: ${age}\nEnd`);
// 输出: Name: Alice, Age: 30\nEnd (\n 是两个字面量)嵌套模板字符串如何求值
当模板字符串内部包含另一个模板字符串时,求值过程是从内向外进行的。内部的模板字符串首先被完全求值为一个普通字符串,然后这个结果作为外部模板字符串的一个表达式值参与最终的拼接。
立即学习“Java免费学习笔记(深入)”;

const inner = "inner_value";
const outer = `outer_${`prefix_${inner}_suffix`}_end`;
console.log(outer);
// 输出: outer_prefix_inner_value_suffix_end表达式中包含空值或异常时会发生什么
如果模板字符串中的表达式求值结果为 null、undefined 或抛出异常,行为会有所不同。对于 null 和 undefined,它们会被转换为空字符串 "" 并拼接到结果中。如果表达式本身抛出错误(例如调用不存在的方法),整个模板字符串的求值过程会中断并向上抛出该错误,导致后续代码无法执行。


















