写在前头
大多数小伙伴看技术书籍都会用“啃”来描述读书的直观感受,当然我也是一个前端小白,白的透明那种,但是我在读技术书籍感觉到“啃”的时候,我希望把我啃红宝书第四版的过程的想法,总结带给大家,以供后来者能够更快上手。
注: 本文由于作者水平原因,如有错误之处,恳请大家指正,另外随着学习的深入,体会的加深,我会不断回来更新,修改这类文章。
思维导图
脉络
这小节就是介绍了3.4数据类型中的3.4.6. String 类型。
3.4数据类型
3.4.6. String 类型
字符串写法,表示什么
表示:String(字符串)数据类型表示零或多个 16 位 Unicode 字符序列。
写法:可以使用双引号(')、单引号(')或反引号( ` )标示。
1.字符字面量
- 种类
书中有一个表格,和其他语言大致相同。
- 位置
可以出现在字符串中的任意位置
- 字符长度
①字符序列
转义序列表示一个字符,所以只算一个字符。 不管他本身看上去有很多个字符,但是还是算做一个字符。
②length属性
字符串是特殊的“数组”,依然有length属性,所以可以使用字符串.length直接测出字符串长度。
2.字符串的特点
- 不可变的
类似const关键字,字符串在初始化之后值都不会改变。
- 修改字符串原理
由于字符串值不会改变,只能销毁。所以修改字符串就是开辟一个新空间把原先的值和要添加或者要删除的值在开辟的空间上组装之后,再把保存原先的值的字符串销毁。
3.转换为字符串
- toString()方法
①可以用于
基本上所以数据类型都要这个方法。会将值转换为字符串类型的值。
②哪些无此方法
null 和 undefined 以及符号没有 toString()方法。
③接受参数
不接收任何参数,直接调用。类似length属性。变量名.toString()
对于数值可以接受底数作为参数,类似Number数据类型中的数值转换里面的parseInt(), parseFloat()。 虽然这2个函数是将字符串转换为整数和浮点数。 - String()转型函数
功能:将要转换的值转换为对应的字符串形式的值。
转换规则
①null
返回null
②undefined
返回'undefined'
③Symbol()
返回对应的符号表示
④有toString()优先
该值toString()有调用该方法并返回结果,优先使用toString()
4.模板字面量
- 定义字符串本质
模板字面量不是字符串,而是一种特殊的 JavaScript 句法表达式,只不过求值后得到的是字符串。
- 与常规定义字符串的区别
保留换行字符,可以跨行定义字符串
- 定义模板
模板字面量可以用来定义固定模板的字符串。
- 保持反引号内部的空格
①length
内部的空格依然计算长度
②换行符开头
直接回车,使用模板字面量可以换行开头
③没有意料之外的字符
**5.字符串插值 **
- 实现手段
使用${}
{}里面放要插入的值,和原先的字符串不用 + 来链接。
- 强制转型
插入的值都会被自带的toString()转型为对应的字符串类型。
- 嵌套的模板字符串无须转义
- 将表达式转换为字符串时会调用 toString()
- 在插值表达式中可以调用函数和方法
- 模板也可以插入自己之前的值
6.模板字面量标签函数 (这里看得迷惑的可以先放一下,学了后面都再回来品)
- 表达式的参数数量是可变的,使用剩余操作符
- 有 n 个插值的模板字面量
对于有 n 个插值的模板字面量,传给标签函数的表达式参数的个数始终是 n,而传给标签函数的第一 个参数所包含的字符串个数则始终是 n+1。
7.原始字符串
String.raw标签函数
可以获得原始字符串
字符串数组的.raw属性
在模板字面量中,对于实际的换行符会直接返回\n ,不会换行。