为了账号安全,请及时绑定邮箱和手机立即绑定

求详解这种转换题

求详解这种转换题

阿波罗的战车 2019-01-29 21:35:07
说不出来具体怎么分析if([]==false){console.log(1)};if({}==false){console.log(2)};if([]){console.log(3)}if([1]==[1]){console.log(4)}求大神详解
查看完整描述

1 回答

?
慕慕森

TA贡献1856条经验 获得超17个赞

和boolean类型比较boolean会转换成数字 false为0 true为1
和数字类型比较会转换为数字类型 复杂类型会走valueOf方法 没有的话走toString方法
所以第一个 []==false => []==0 []默认没重写valueOf 所以走toString 数组toString默认是join 所以最后为""==0 基本类型和数字比较会走Number方法 即Number("") 返回0 最后 0==0 true
第一个一样的道理 但是{}的toString为"[object Object]" Number后为NaN 所以{}==false为false
第三个 复杂类型转换为boolean类型都为true 
第四个 复杂类型和复杂类型比较的是内存地址 所以[1]==[1]为false

查看完整回答
反对 回复 2019-01-29
  • 1 回答
  • 0 关注
  • 485 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信