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