猿问

js真假之空数组的转换

let obj ={        a :true,        b:[]
    }if(obj.a && obj.b){
  console.log(324)
}//这里为什么会输出324呢? 明明obj.b是个空数组怎么会是真呢?//如果整个流程是这样的话?obj.b => [] => Boolean([]) => true//为啥单单比较[]===[]//就是false呢?

**

补充:如果我要实现一般情况的那种都为true才执行1的功能,该如何修改呢?这个数组有些时候是非空数组


拉风的咖菲猫
浏览 537回答 1
1回答

守着星空守着你

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

相关分类

JavaScript
我要回答