字面量

在计算机科学中,字面量用于在源代码中表示某个固定值。在 JavaScript 程序中,字面量不是变量,它是直接给出的固定值。

Null 字面量

Null 字面量只有一个,记作 null

Boolean 字面量

Boolean 字面量有两个,分别记作 truefalse

Number 字面量

Number 字面量包含四类:二进制整数字面量、八进制整数字面量、十进制数字面量以及十六进制整数字面量。二进制整数字面量以 0b 或 0B 开头(第一个字符为数字 0),并只包含数字 0 或 1。八进制整数字面量以 0o 或 0O 开头(第一个字符为数字 0,第二个字符为字母 o),并且只包含数字 0 至 7。十进制数字面量由一串数字组成,支持整数、小数和科学记数法。十六进制整数字面量以 0x 或 0X 开头(第一个字符为数字 0),可以包含数字 0 至 9、小写字母 a 至 f 以及大写字母 A 至 F 。

字符串字面量

字符串字面量是使用一对单引号或双引号包围起来的 Unicode 字符。字符串字面量中可以包含 Unicode 转义序列和十六进制转义序列。JavaScript 中的主流编码风格推荐使用单引号表示字符串字面量。

模板字面量

模板字面量是 ECMAScript 2015 引入的新特性,它提供了一种语法糖来帮助构造字符串。模板字面量的出现帮助开发者解决了一些长久以来的痛点,如动态字符串的拼接和创建多行字符串等。模板字符串的基本语法是使用反引号 “`”(键盘上数字键1左侧的按键)替换了字符串字面量中的单、双引号。

多行字符串

在使用字符串字面量创建多行字符串时,需要在每一处换行的位置添加转义字符 “\n”,可读性较差。示例如下:

const template = "\n<table>\n  <tr>\n    <th>昵称</th>\n    <th>性别</th>\n
   </tr>\n  <tr>\n    <td>多米</td>\n    <td>女</td>\n  </tr>\n</table>\n";

在阅读代码时,很难弄清楚这个字符串的含义。如果使用模板字面量来创建多行字符串,则更符合心智模型。例如,可以将上例中的字符串改写为如下的模板字面量:

const template = `
<table>
  <tr>
    <th>昵称</th>
    <th>性别</th>
  </tr>
  <tr>
    <td>多米</td>
    <td>女</td>
  </tr>
</table>
`;

字符串占位符

使用字符串占位符能够将动态的内容插入生成的字符串中。字符串占位符使用 “${}” 符号表示,在大括号中可以插入任意的 JavaScript 表达式。例如,我们可以使用模板字面量来构造一个 Web API 地址,示例如下:

const root = 'https://api.github.com';
const owner = 'microsoft';
const repo = 'TypeScript';

// https://api.github.com/repos/microsoft/TypeScript
const url = `${root}/repos/${owner}/${repo}`;

此例中,我们将 Web API 地址的组成部分放在了变量里并通过字符串占位符引用它们的值,最终拼接成一个完整的地址。