我正在为社交做准备。我想知道为什么
(false == []) === true
, 同时
(false == Boolean([])) === false
.
如何解释这样的现象?
我知道在第一种情况下将调用数组ToPrimitive()
,然后它应该像这样工作valueOf()
。也许我错了,但看起来这个方法会返回length
0,这是一个假值,对吧?
我正在为社交做准备。我想知道为什么
(false == []) === true
, 同时
(false == Boolean([])) === false
.
如何解释这样的现象?
我知道在第一种情况下将调用数组ToPrimitive()
,然后它应该像这样工作valueOf()
。也许我错了,但看起来这个方法会返回length
0,这是一个假值,对吧?
一个数组,当与一个基元进行非严格比较时,会被转换为一个空字符串,因此,通过与 的进一步非严格比较
false
,得到一个匹配。但是,如果您将对象显式转换为布尔值,则返回true
,因此第二个结果是。请参阅https://javascript.info/array#don-t-compare-arrays-with的详细信息