【js】数据类型的判断

知识点补充:

相等和不相等——先转换再比较 (==)

全等和不全等——仅比较而不转换 (===)

Boolean转型函数的转换规则如下:

  • 针对布尔值:true -> true false-> false
  • 针对数值: 0-> false 1->true NaN->false
  • 针对字符串: '' -> false 非空->true
  • 针对undefined: undefined -> false
  • 针对null : null-> false
  • 针对对象: 任何对象->true   //所以![] !{} 为false

null、undefined、NaN以及空字符串('')取反都为true,其余都为false。

//解释一
 []==[]  //false
 {}=={}  //false
//解释二
[] == ![]   //true
[] == ! []   ->   [] == false  ->  [] == 0  ->   ([]).toString()  == 0   ->  '' == 0   ->  0 == 0   ->  true

{} == !{}   //false
{} == ! {} -> {} == false -> {} == Number(false) -> {} == 0 -> ({}).toString() == 0 -> [object Object] == 0 -> false

解释一:每次使用 [] 都是新建一个数组对象。当数组比较的时候其实比较的是他们的引用。[] == []的时候,从值上尽管两边都是[]但是从引用上两边是不相等的。

解释二:两者判断的差别在于([]).toString()结果是'',变成数字是0; ({}).toString()结果是[object Object],变成数字是NaN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值