为什么 JavaScript JSON 的计算结果为 false

Why does JavaScript JSON evaluate to false?

本文关键字:结果 false 计算 JavaScript JSON 为什么      更新时间:2023-09-26

为什么会这样:

var bla = {
    "1":"1",
    "2":"2"    
}
console.log(bla === true) 

是假的 ?

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

那是因为bla是一个对象而不是一个boolean

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

查看此问答以获取更多帮助

通过使用

===,您可以在不进行类型转换的情况下进行比较,因此不同类型的变量永远不会相等。

> bla = {"1": "1", "2": "2"}
> bla == true
=> false
> bla === true
=> false
> bla === false
=> false
> Boolean(bla) === true        // Do it like this
=> true

你的 bla 是一个对象,false 是布尔值。

  • 严格平等===

如果操作数严格相等(见上文)且没有类型转换,则标识运算符返回 true。

  • 平等 ==
如果操作数的类型

不同,则相等运算符将转换操作数,然后应用严格的比较。如果操作数是数字或布尔值,则操作数将尽可能转换为数字;否则,如果任一操作数是字符串,则字符串操作数将尽可能转换为数字。如果两个操作数都是对象,那么当操作数引用内存中的同一对象时,JavaScript 会比较内部引用,这些内部引用是相等的。

来源:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

不能将对象等同于布尔值。 您可以使用对象索引或像这样检查对象是否存在

console.log(bla[1] == true)
or 
if(bla)  { console.log(true); }