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
添加回答
举报
0/150
提交
取消