为什么对象上的相等运算符返回false?

时间:2015-09-02 16:26:41

标签: javascript angularjs

我正在尝试操纵Web消息系统的视图,默认视图是一个空白对象{}。我在AngularJS脚本中使用ng-show="data.currentView == {}"来检查它当前是否是默认视图,但它从未显示过。然后我在Chrome的Javascript控制台中尝试了这个:

var data = {}
console.log(data == {})
//Logs false
console.log(data === {})
//Logs false

为什么该语句返回false?

2 个答案:

答案 0 :(得分:4)

您正在测试两个对象是否是同一个对象,而不是它们是相同的对象。

请参阅the specification

  

如果Type(x)与Type(y)相同,则...如果x和y引用同一个对象,则返回true。否则,返回false。

答案 1 :(得分:1)

您正在将引用与对象进行比较,因此它们永远不会相等。一个好方法是:

Object.keys(data.currentView).length == 0