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

js真假之空数组的转换

js真假之空数组的转换

拉风的咖菲猫 2018-11-17 17:19:05
let obj ={        a :true,        b:[]     }if(obj.a && obj.b){   console.log(324) }//这里为什么会输出324呢? 明明obj.b是个空数组怎么会是真呢?//如果整个流程是这样的话?obj.b => [] => Boolean([]) => true//为啥单单比较[]===[]//就是false呢?**补充:如果我要实现一般情况的那种都为true才执行1的功能,该如何修改呢?这个数组有些时候是非空数组
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

if里面的转换和==比较的隐式转换不一样;
if条件里面只要是Object类型就是true,可参见To Boolen表;
==的隐式类型转换式通过ToPrimitive的流程,可见其他回答下的文章链接;
[]===[]:两个[]的引用地址不一样当然是false

查看完整回答
反对 回复 2018-11-17
  • 1 回答
  • 0 关注
  • 536 浏览
慕课专栏
更多

添加回答

举报

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