js的隐式类型转换之特殊的隐式转换总结

本文深入探讨了JavaScript中数组、null、undefined等类型的隐式转换规则,解释了不同数据类型在比较运算中的行为,包括类型转换和布尔值的特殊处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.[]

!![] == true     //true
[] == true       //false
![] == []        //true


原因:[]是javascript中比较特殊的隐式转换

String([]) //""
Number([]) //0
Boolean([]) //true

 

 
[] == true // 0 == 1 ->false
 
// !是逻辑非,将布尔值求反;!!是类型转换,将对应类型转为Boolean型
![] == [] //![] -> false; false == 0 ->true
 
!![] == true //true == true ->true


不要晕,我们再来一段:

[] == 0 //true
![] == 0 //true (Boolean([])是true)
[] == "" //true
!![] == "" //false
"" == true //false


2. null 与 undefined

null == undefined //true


3. 一个是数字,一个是字符串 。先将字符串转为数字,再比较

 

4. 其中一个值是true,则将其转为1再比较;false亦然

 

5. 一个值是对象,另一个是数字或字符串。则将对象转为原始值,再比较。

    对象通过toString()或valueOf()转换为原始值:

    toString(): 返回一个反映这个对象的字符串;

    valueOf(): 一个对象如果存在一个原始值,就将其转换为它的原始值。

    JavaScript语言核心的内置类先尝试使用valueOf(),再尝试使用toString(),除了日期类,日期类只能使用toString转换。

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值