JavaScript 面试题
目录

请解释 ES6 中的模板字符串 (Template Literals) 的用法和特点。

· 约 5 分钟读完 · 第 102 / 507 章

推荐答案

ES6 引入的模板字符串(Template Literals)是一种新的字符串字面量表示方法,使用反引号 (``) 包裹,它主要解决了传统字符串拼接的痛点,并提供了更强大的功能:

  1. 字符串插值 (String Interpolation): 可以直接在字符串中嵌入变量或表达式,使用 ${expression} 的形式,无需繁琐的加号连接。
  2. 多行字符串 (Multiline Strings): 允许直接编写跨越多行的字符串,保留换行符和空格,而无需使用 \n 或连接符。
  3. 标签模板 (Tagged Templates): 可以使用函数来处理模板字符串,允许更高级的字符串操作和格式化。

示例:

本题详细解读

1. 模板字符串的基本语法

模板字符串使用反引号 (`) 包裹,而非单引号或双引号。 这种包裹方式赋予了它更强的表达能力。

2. 字符串插值

这是模板字符串最常用的特性。 使用 ${expression} 可以在字符串中嵌入任何 JavaScript 表达式,表达式的值会被自动转换为字符串并插入到模板字符串中。 例如,你可以直接使用变量、函数调用、算术运算等。

3. 多行字符串

在传统的 JavaScript 字符串中,编写多行字符串需要使用 \n 换行符或使用字符串连接符。而模板字符串允许直接换行,并保留换行符和空格,使代码更具可读性。

4. 标签模板

标签模板是一种更高级的用法,它允许你使用一个函数来处理模板字符串,函数名即标签。 这个函数接收两个参数:

  • strings: 一个包含所有字符串字面量的数组,字符串字面量按照模板字符串中的表达式进行分割。
  • values: 一个包含所有表达式计算结果的数组。

标签模板通常用于更复杂的字符串操作,例如:

  • 国际化(i18n)。
  • HTML 转义。
  • 自定义格式化。

5. 注意事项

  • 模板字符串表达式内部可以是任何有效的 JavaScript 表达式,包括函数调用、三元运算符等。
  • 如果需要在模板字符串中使用反引号 \,需要使用反斜杠 \ 转义。
  • 标签模板的功能强大,可以实现许多自定义的字符串处理逻辑,但使用不当可能会导致代码复杂化。