本来打算年后辞职, 却碰上了疫情, 暂时打消了跳槽的想法。2020已经过半, 国内疫情已经开始稳定, 公司的很多小伙伴已经离职,自己也要开始准备面试,开始对前端对知识查漏补缺,首先开始的是js的类型转换问题, 业务中非常常见, 但是如果对转换规则不熟悉, 就很有可能出现错误。
今天就来好好巩固一下。
javaScript中类型的转换情况
js中只有3种类型转换, 如下:
- 转字符串
- 转数字
- 转布尔值
js中的基础类型
开始正文之前, 先列出js的数据类型
原始类型
- boolean
- string
- number
- null
- undefined
- symbol
对象类型
- function
- math
- date
- Rex
- Object
- Array
- Set
- Map
类型转换的场景
1. 条件判断: 转布尔值
除了undefined, null, ‘’, 0, false, NaN, 其他所有值都会转为true
2. 四则运算
四则运算中, js会尝试把参与运算的目标转换为数字或者字符串, 这里通过macho来测试一波
原始类型中Symbol尝试使用加法运算符会**直接报错**(Uncaught TypeError: Cannot convert a Symbol value to a string/number)
- 字符串 + 原始类型 = 字符串 // 把非字符串类型的目标转化为字符串
- 数字 + 原始类型 = 数字 // 把非字符串或数字类型转化为数字
- 原始类型 + 原始类型 // 转换为数字
注: 乘法运算与加法运算符相似, 会把另一方非数字类型转换为数字
