字符串

下一个基本数据类型是字符串(String)。 字符串用于表示文本。 它们是用引号括起来的:

  1. `Down on the sea`
  2. "Lie on the ocean"
  3. 'Float on the ocean'

只要字符串开头和结尾的引号匹配,就可以使用单引号,双引号或反引号来标记字符串。

几乎所有的东西都可以放在引号之间,并且 JavaScript 会从中提取字符串值。 但少数字符更难。 你可能难以想象,如何在引号之间加引号。 当使用反引号(` )引用字符串时,换行符(当你按回车键时获得的字符)可能会被包含,而无需转义。

若要将这些字符存入字符串,需要使用下列规则:当反斜杠(\)出现在引号之间的文本中时,表示紧跟在其后的字符具有特殊含义,我们将其称之为转义符。当引号紧跟在反斜杠后时,并不意味着字符串结束,而表示这个引号是字符串的一部分。当字符n出现在反斜杠后时,JavaScript 将其解释成换行符。以此类推,\t表示制表符,我们来看看下面这个字符串:

  1. "This is the first line\nAnd this is the second"

该字符串实际表示的文本是:

  1. This is the first line
  2. And this is the second

当然,在某些情况下,你希望字符串中的反斜杠只是反斜杠,而不是特殊代码。 如果两个反斜杠写在一起,它们将合并,并且只有一个将留在结果字符串值中。 这就是字符串“A newline character is written like "\n".”的表示方式:

  1. "A newline character is written like \"\\n\"."

字符串也必须建模为一系列位,以便能够存在于计算机内部。 JavaScript 执行此操作的方式基于 Unicode 标准。 该标准为你几乎需要的每个字符分配一个数字,包括来自希腊语,阿拉伯语,日语,亚美尼亚语,以及其他的字符。 如果我们为每个字符分配一个数字,则可以用一系列数字来描述一个字符串。

这就是 JavaScript 所做的。 但是有一个复杂的问题:JavaScript 的表示为每个字符串元素使用 16 位,它可以描述多达 2 的 16 次方个不同的字符。 但是,Unicode 定义的字符多于此 - 大约是此处的两倍。 所以有些字符,比如许多 emoji,在 JavaScript 字符串中占据了两个“字符位置”。 我们将在第 5 章中回来讨论。

我们不能将除法,乘法或减法运算符用于字符串,但是+运算符却可以。这种情况下,运算符并不表示加法,而是连接操作:将两个字符串连接到一起。以下语句可以产生字符串"concatenate"

  1. "con" + "cat" + "e" + "nate"

字符串值有许多相关的函数(方法),可用于对它们执行其他操作。 我们将在第 4 章中回来讨论。

用单引号或双引号编写的字符串的行为非常相似 - 唯一的区别是需要在其中转义哪种类型的引号。 反引号字符串,通常称为模板字面值,可以实现更多的技巧。 除了能够跨越行之外,它们还可以嵌入其他值。

  1. `half of 100 is ${100 / 2}`

当你在模板字面值中的$ {}中写入内容时,将计算其结果,转换为字符串并包含在该位置。 这个例子产生"half of 100 is 50"