我是JavaScript的初学者,并得知只有有限的虚假值:
false, 0, -0, BigInt 0n, “”, null, undefined, NaN
==
但是,当我使用具有真实价值的
// outputs are written as comments
console.log(false == "0"); //true
console.log(false == []); //true
console.log(Boolean("0")); //true
console.log(Boolean([])); //true
console.log(Boolean([]) == []); //false
false == "0"
我相信您正在遇到这一点:https://stackoverflow.com/a/14581884/65387
I.E。比较
"0"
时,0
转换为虚假的false == []
,这就是为什么它们比较相等的原因。
对于typeof [] === 'object'
,您正在击中对象案例(
+[]
),因此它正在做胁迫,本质上也是
0
。