携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情
JS 数据类型转换规则(二)
引言
- 在前一篇,着重介绍了其他数据类型转数字。这一篇,则会去讲解其他数据类型 转字符串,其他数据类型转布尔值
其他数据类型转字符串
转换规则
基本数据类型,就是用字符串包起来,对象转字符串和上一篇``一样
- 基本数据类型转字符串: 拿字符串包起来
- 对象转字符串
会走下面三步(1) Symbol.toPrimitive (2) valueOf (3) toString
运算中的字符串转换
"+"号出现在左右两边,其中一边是字符串或者是某些对象,会以字符串的形式拼接
- “+” 号除数学运算,还可能代表字符串拼接,那到底是运算,还是字符串拼接呢? 我们开看几个demo
没什么悬念, 就是字符串拼接
先会进行如下转换
所以是运算 10 + 10 = 20
由于不知道是运算还是字符串拼接,所以Symbol.toPrimitive会传入default
所以是最后的结果是字符串
会进行如下转换
"+"号出现在一个值的左边
- i++ 一定是数学运算
i++ 一定是数学运算
-
+=如果有一方是字符串,则是字符串拼接
-
+将字符串转为数字
其他数据类型转布尔
转换规则
- 除了'',0, null,undefined,NaN这五个值是false,其余都是true
出现的情况
- Boolean() 或者 ! / !!
- 条件判断
装箱和拆箱
- 装箱
let a = 10
console.log(a.toFixed(2)) // '10.00'
基本数据类型不能做成员访问,浏览器会默认会进行装箱操作 new Number(a),将其变为非标准特殊对象,这样就可以访问toFixed了
- 拆箱
console.log(10 + new Number(10)) / 20
在操作过程中,浏览器会默认吧new Number(10),进行 <Symbol.toPrimitive, valueOf,toString> 将new Number(10)变为基本数据类型,这个过程叫做拆箱操作