购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 String类型

3.3.1 认识String类型

字符串由零个或多个字符组成。字符包括字母、数字、标点符号和空格,将字符包含在单引号或双引号内就是字符串。比如:

这段代码用关键字typeof检测了四个字符串的类型值,前两个字符串用单引号包裹,后两个字符串用双引号包裹。需要特别讲解的是第四行代码,“1234”看上去是数字,但因为它嵌套了双引号,变为字符串,所以使用关键字typeof检测返回的结果是“string”。

当把字符串赋值给某个变量时,在后续使用时需要注意,使用变量时不加引号,因为变量里存储的是字符串,变量无论是被定义还是被使用,它依旧是变量,所以不必加引号。比如:

在这段代码中,我们给变量命名为str,它是string的词头,是程序员对临时字符串的习惯命名。使用关键字typeof判断变量str,因为str是变量,所以没有加引号。

代码运行后,输出结果“string”。

在JavaScript中用引号包含时需要注意:如果字符串中包含了单引号,则字符串使用双引号包裹;如果字符串中包含了双引号,则字符串使用单引号包裹。比如:

这里不需要理解这行代码的功能,但要知道如果一行代码出现多对引号,则需要内外交叉使用引号,内双外单或外双内单。

在实际开发中,无论是使用单引号,还是使用双引号,建议应保持一致,一些公司会限制程序员统一使用某种引号。

使用字符串的length属性可以读取字符串的长度。字符串可以调用length属性,length的英文原意是“长度”,该属性为只读属性。比如:

这段代码通过变量str调用length属性,也就是读取字符串“atguigu”的长度,故输出结果为7。

3.3.2 模板字符串

ES6(ES 2015)为JavaScript引入了许多新特性,其中与字符串处理相关的一个新特性——模板字符串,提供了多行字符串、字符串模板的功能。模板字符串的基本使用方法很简单,但大多数开发者只把它当成字符串拼接的语法糖(编程语言中可以更容易地表达一个操作的语法)来使用,实际上它的功能比这要强大得多。

在ES6之前的JavaScript,字符串作为基本类型,其在代码中的表示方法只是将字符串用引号(单引号'或双引号")包裹起来,ES6中的模板字符串(以下简称ES6模板)则使用反引号(`)包裹作为字符串表示法。两个反引号之间的常规字符串保持原样,比如:

上面的代码使用模板字符串实现了ES5中的字符串的功能。其实模板字符串在两种情况下使用更方便:一种是字符串内部有换行的情况,另一种是字符串中有动态的变量值,下面将依次进行讲解。

对于JavaScript来说,换行符也是一个字符。在ES5的字符串内部是无法直接换行的,而模板字符串支持多行字符,比如:

运行代码后,控制台输出结果如图3-1所示。

图3-1 控制台输出结果

当字符串中有动态的变量时,使用模板字符串更直观方便,只需在两个反引号之间以${expression}格式包含任意JavaScript表达式,该expression表达式的值会转换为字符串,与表达式前后的字符串拼接。比如:

总结一下,模板字符串具有以下五个特点:

· 模板字符串是增强版的字符串,用反引号(`)标识。也就是说,在使用模板字符串的时候,必须用“``”包裹,适合用来定义多行字符串。

· 模板字符串可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

· 在模板字符串嵌入变量时,需要将变量名写在“${…}”之中,在执行时会立即在线解析求值。

· 大括号内部可以放入任意的JavaScript表达式,可以进行运算,以及引用对象属性。

· 如果在模板字符串中需要使用反引号,则要在其前面使用反斜杠转义。

3.3.3 特殊字符

在字符串中可以使用特殊字符表示特殊文本,如表3-5所示。

表3-5 字符串中的特殊字符

这些特殊符号有什么作用呢?我们来看一个例子。比如,定义一个字符串“abcdefghi”,其中“def”三个字母要用引号括起来。上一节已经说过,字符串可以相互嵌套,但是同种引号嵌套是不允许的,简单地说,不能单引号嵌套单引号或双引号嵌套双引号。那么要怎么实现这个需求呢?

这时特殊字符就派上用场了,在单引号前添加反斜杠\消除歧义即可:

加上反斜杠之后,引号被转义,输出abc'def'ghi。这就是特殊字符的含义。

再看一个例子。若想在字符串中实现换行,那么要使用“\r”或“\n”,具体使用哪个,根据浏览器和操作系统决定。解决方法就是同时书写“\r\n”,比如:

在字符串中书写“\r\n”表示换行,运行结果如图3-2所示。

需要特别说明的是,使用单引号或双引号包裹的字符串中是绝对不允许出现真正的换行的,如果想在浏览器中显示换行效果,则可以在字符串中加上转义字符,或者使用模板字符串。

图3-2 运行结果 3G+lc1xNg3s2iImiIlOrEI4gS0HALHGZuYEiU8L/pf0ZrKLefa757Ys99sPlYWm7

点击中间区域
呼出菜单
上一章
目录
下一章
×