为什么JavaScript JSON评估为false?

时间:2014-11-18 08:57:34

标签: javascript

为什么:

var bla = {
    "1":"1",
    "2":"2"    
}

console.log(bla === true) 

是假的?

http://jsfiddle.net/nottinhill/jdxvnea1/

4 个答案:

答案 0 :(得分:4)

那是因为bla对象而不是boolean

console.log(typeof bla === 'object') //logs true

check this Q/A for more help on that

答案 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); }