【青山学js】js基础数据类型之String(上)

这是我参与更文挑战的第2天,活动详情查看: 更文挑战

什么是字符串

字符串是我们在学习JavaScript时经常见到的一种数据类型,它通常用两个双引号(”)、单引号(‘)或者反引号(`)组成,就像下面这样

let name = "李华"
let home = '河南'
let job = `程序员`
复制代码

犹如需要闭合的html标签一样,我们在写字符串时也需要保持首尾一致,例如开头是双引号,结尾也必须是双引号,下面的例子会报错

let name = "李华' // Uncaught SyntaxError: Invalid or unexpected token
复制代码

字符字面量

字符串数据类型包涵一些字符字面量,用于表示非打印字符或有其他用途的字符,比如换行符 \n ,但是请注意,html并不识别这些特殊的非打印字符,他们在html中既不显示,也不起作用,将会被解析为一个空格

<div id="wrap">
</div>
复制代码
const text = 'hello \n world'
const wrap = document.getElementById('wrap')
wrap.innerHTML = text
复制代码

image.png

像这样的特殊字符一共有下面几种

字面量 含义
\n 换行
\t 制表
\b 退格
\r 回车
\f 换页
\xnn 以十六进制编码nn表示的字符(其中n是十六进制数字0-F),例如\x41等于”A“
\unnnn 以十六进制编码nnnn表示的Unicode字符(其中n是十六进制数字0-F),例如\u03a3等于古希腊字符”Σ“

注意,如果换行、制表、回车、换页字面量将会解为为一个空格。

我们可以发现,字符字面量就是一个反斜线加上指定字符形成的,那如果有时候我们不想这些字面量生效,只是想单纯的展示一个字符串 \n 怎么办呢,我们可以在前面再加上一个反斜线 \,就可以将后面的反斜线转移为一个正常的字符

const text = 'hello \\n world'
const wrap = document.getElementById('wrap')
wrap.innerHTML = text
复制代码

image.png

同样的道理也可以适用于单引号、双引号和反引号,如果我们想在字符串中正常的显示他们,只需要在他们前面加上一个反斜线 \就行了。

还有一个注意点就是,既然这些字面量不像我们看到的那样进行展示,那么他们是否还占字符串长度呢?我们可以来试验一下

'hello\nworld'.length   -> 11 // 解析为 hello world
'hello\x41world'.length -> 11 // 解析为 helloAworld
'hello\bworld'.length   -> 11 // 解析为 helloworld
复制代码

可见,length属性是获取的字符字面量被解析后的内容所占的长度。值得注意的是 \b 虽然没有被解析为一个空格,但它还是占一个长度。

转为字符串

在很多时候我们需要将目标值转为字符串再进行操作或者展示,这时候我们就可以用下面的两种方法

toString()

一种是几乎所有值都有的toString()方法

true.toString() // "true"
10.toString() // "10"

let a = new Object()
a.toString() // "[object Object]"
复制代码

多数情况下toString()方法不接收参数,不过如果在对数字类型的值调用toString()方法时可以传一个进制参数,表示你想把这个数值转为几进制的数字的字符串类型。例如

10.toString(2) // "1010"
复制代码

直接加一个空字符串

另一中方法就是直接给目标值加上一个空的字符串,因为任何值与一个字符串相加的时候,都将先被转换为一个字符串在进行计算,这个我们可以在加号操作符相关的文章内看到。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享