js类型转换

js类型转换

转换规则

在js中,类型转换只有3种,分别是:

  • 转换为boolean
  • 转换为string
  • 转换为number
原始类型目标类型转换规则
numberboolean除了0,-0,NaN,都为true
stringboolean除了空串都为true
undefined,nullbooleanfalse
引用类型,symbolbooleantrue
numberstring数字对应的字符串
boolean,function,symbolstring对应的代码
arraystring[1,2,[3,4,[5,6]],7]=>‘1,2,3,4,5,6,7’
objectstring‘[object Object]’
stringnumber如果字符串对应是合法数字则直接转换,否则转为NaN
arraynumber空数组为0;仅有一个数字则转为该数字;否则为NaN
nullnumber0
引用类型(数组除外)numberNaN
Symbolnumber报错

对象转原始类型

先调用valueOf方法,如果结果不是原始值,那么再调用toString方法

不同类型对象的valueOf()方法的返回值

对象返回值
array数组对象本身
boolean布尔值
date存储的时间是从 1970 年 1 月 1 日午夜开始计的毫秒数 UTC
function函数本身
number数字本身
object默认情况下为对象本身
string字符串值
math,errorvalueOf方法

参考MDN

使用==运算符时发生的转换

==两侧数据类型一样时,直接进行数值比较;不一样的话,就会发生类型转换,规则如下:

  1. 判断两侧是不是nullundefined,是的话就返回true
  2. 判断两侧是否是stringnumber,是的话就将string转换为number
  3. 如果两侧有一方是boolean,那么将boolean转换为number再进行比较
  4. 如果一侧是object另一侧不是,则将其转为原始类型再进行比较
  5. 如果两边都是object,则比较二者地址

例 []==![]

  1. !的优先级高于==,因此先运算右边,[]要转换为boolean,即true![]就是false,问题变为[]==false
  2. 根据规则3,false要被转换为0,即[]==0
  3. 根据规则4,将[]转换为原始类型,得到空字符串
  4. 根据规则2,空字符串将转为数字0,问题最终变为0==0,返回true

例 {}==!{}

  1. !的优先级高于==,因此先运算右边{}要转换为boolean,即true!{}就是false,问题变为[]==false
  2. 根据规则3,false要转换为0,即[]==0
  3. 根据规则4,{}转换为原始类型,得到字符串[object Object]
  4. 根据规则2,将字符串转为数字NaN,问题最终变为NaN==0,返回false
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值