为什么:
var bla = {
"1":"1",
"2":"2"
}
console.log(bla === true)
是假的?
答案 0 :(得分:4)
那是因为bla
是对象而不是boolean
。
console.log(typeof bla === 'object') //logs true
答案 1 :(得分:3)
使用===
进行比较而不进行类型转换,因此不同类型的变量永远不会相等。
> bla = {"1": "1", "2": "2"}
> bla == true
=> false
> bla === true
=> false
> bla === false
=> false
> Boolean(bla) === true // Do it like this
=> true
答案 2 :(得分:1)
你的bla是一个对象,false是布尔值。
如果操作数严格相等(见上文)且没有类型转换,则identity运算符返回true。
如果操作数不是同一类型,则等于运算符会转换操作数,然后应用严格比较。如果操作数是数字或布尔值,操作数将尽可能转换为数字;否则,如果任一操作数是字符串,则尽可能将字符串操作数转换为数字。如果两个操作数都是对象,那么JavaScript会比较内部引用,当操作数引用内存中的同一个对象时,它们是相等的。
来源:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
答案 3 :(得分:0)
你不能将对象等同于布尔值。你可以使用对象索引或检查是否存在这样的对象
console.log(bla[1] == true)
or
if(bla) { console.log(true); }