当前位置:  首页>> 技术小册>> ES6入门指南

ES6 模板字符串(Template Strings)是 ECMAScript 6 (ES6) 新增的一项语言特性,它提供了一种更方便的字符串拼接方式,同时还支持多行字符串和内嵌表达式等功能。


1、什么是 ES6 模板字符串

ES6 模板字符串是一种新的字符串类型,它使用反引号()括起来,内部可以包含任意的文本和表达式。在模板字符串中,表达式需要使用 ${expression} 的形式进行嵌入。

下面是一个简单的模板字符串示例:

  1. const name = 'World';
  2. const message = `Hello, ${name}!`;
  3. console.log(message); // 输出: Hello, World!

在上面的代码中,我们定义了一个字符串变量 message,它是由文本 Hello, 和表达式 ${name} 以及文本 ! 组成的。在输出 message 变量的时候,表达式 ${name} 会被替换为变量 name 的值,即 ‘World’。

与传统的字符串拼接方式相比,ES6 模板字符串具有以下优势:

  • 更加简洁和易读:使用 ${expression} 的形式嵌入表达式,可以让代码更加清晰明了,不再需要繁琐的字符串拼接。
  • 支持多行字符串:在模板字符串中,可以直接使用换行符创建多行字符串,不再需要使用转义字符或者字符串拼接的方式。
  • 安全可靠:ES6 模板字符串可以避免一些常见的字符串拼接错误,比如忘记添加空格或者忘记转义特殊字符等问题。

下面我们将通过几个例子来演示 ES6 模板字符串的使用方法。

1.1 基本用法
ES6 模板字符串的基本用法非常简单,只需要使用反引号()包裹字符串即可。在模板字符串中,可以使用 ${expression} 的形式嵌入表达式。

下面是一个简单的示例,演示了如何使用模板字符串来输出一句话:

  1. const name = 'John';
  2. const message = `Hello, ${name}!`;
  3. console.log(message); // 输出: Hello, John!

在上面的代码中,我们使用了模板字符串来输出一句话,其中 ${name} 是一个表达式,它会被替换为变量 name 的值。

1.2 多行字符串
在传统的 JavaScript 中,如果要创建一个多行字符串,我们通常需要使用转义字符或者字符串拼接的方式。而在 ES6 中,使用模板字符串可以非常方便地创建多行字符串。

下面是一个示例,演示了如何使用模板字符串创建一个多行字符串:

  1. const message = `这是一个
  2. 多行
  3. 字符串`;
  4. console.log(message);

在上面的代码中,我们使用了模板字符串来创建一个多行字符串,其中使用了换行符来换行。在输出 message 变量的时候,会按照原样输出多行字符串,不会受到换行符的影响。

使用模板字符串创建多行字符串的好处在于,它可以让代码更加清晰易读,避免了使用转义字符或者字符串拼接的方式所带来的代码混乱问题。

1.3 嵌入表达式
在模板字符串中,可以使用 ${expression} 的形式嵌入表达式。表达式可以是任意 JavaScript 代码,它会在运行时被计算出来,并替换为表达式的结果。

下面是一个示例,演示了如何在模板字符串中嵌入表达式:

  1. const price = 10;
  2. const quantity = 5;
  3. const message = `总价为 ${price * quantity} 元。`;
  4. console.log(message); // 输出: 总价为 50 元。

在上面的代码中,我们使用了模板字符串来计算并输出一个购物总价。在模板字符串中,我们使用了表达式 ${price * quantity},它会在运行时计算出购物总价,并替换为表达式的结果。

使用模板字符串嵌入表达式的好处在于,它可以让代码更加简洁易读,同时也可以避免一些常见的字符串拼接错误。

1.4 标签模板
除了普通的模板字符串,ES6 还提供了一种特殊的模板字符串,称为标签模板(Tagged Templates)。标签模板可以让我们在模板字符串中自定义解析和处理字符串的方式,从而实现更加灵活和强大的功能。

下面是一个示例,演示了如何使用标签模板来处理模板字符串:

  1. function myTag(strings, ...values) {
  2. console.log(strings); // 输出: ["Hello, ", "!"]
  3. console.log(values); // 输出: ["John"]
  4. return `${strings[0]}${values[0]}${strings[1]}`;
  5. }
  6. const name = 'John';
  7. const message = myTag`Hello, ${name}!`;
  8. console.log(message); // 输出: Hello, John!

在上面的代码中,我们定义了一个标签函数 myTag,它接收一个字符串数组 strings 和多个参数 …values。在模板字符串中,我们使用了标签函数 myTag 来处理字符串。在标签函数中,我们可以自定义处理字符串的方式,例如将字符串中的变量替换为实际的值。

使用标签模板的好处在于,它可以让我们自定义处理模板字符串的方式,从而实现更加灵活和强大的功能。比如,我们可以使用标签模板来实现模板渲染、国际化、代码高亮等功能。

2、在模板字符串中使用原始字符串

在 JavaScript 中,字符串有两种表示方式:转义字符串和原始字符串。转义字符串使用双引号或单引号表示,可以使用转义字符来表示特殊字符。而原始字符串使用反引号表示,可以包含任意字符,包括换行符和特殊字符,不需要使用转义字符。

在 ES6 中,我们可以使用 String.raw 方法来将转义字符串转换为原始字符串。同时,我们也可以在模板字符串中使用 String.raw 方法来创建原始字符串。

下面是一个示例,演示了如何在模板字符串中使用原始字符串:

  1. const path = String.raw`C:\Users\username\Desktop\file.txt`;
  2. console.log(path); // 输出: C:\Users\username\Desktop\file.txt

在上面的代码中,我们使用了 String.raw 方法来创建一个原始字符串,并将其赋值给 path 变量。在输出 path 变量的时候,我们可以看到它的值是一个原始字符串,不受转义字符的影响。

使用原始字符串的好处在于,它可以避免一些常见的转义字符错误,同时也可以让代码更加简洁易读。

小结
ES6 中的模板字符串提供了一种更加方便和灵活的字符串表示方式。它可以让我们更加清晰易读地创建多行字符串,同时也可以让我们更加简洁易读地嵌入表达式。除此之外,ES6 还提供了标签模板和原始字符串等功能,使得模板字符串在处理字符串时更加灵活和强大。


该分类下的相关小册推荐: