Javascript 为什么对象上的相等运算符返回false?
我试图操作web消息传递系统的视图,默认视图是一个空白对象,Javascript 为什么对象上的相等运算符返回false?,javascript,angularjs,Javascript,Angularjs,我试图操作web消息传递系统的视图,默认视图是一个空白对象,{}。我在AngularJS脚本中使用了一个ng show=“data.currentView=={}”来检查它当前是否是默认视图,但从未显示。然后,我在Chrome的Javascript控制台中尝试了以下方法: var data = {} console.log(data == {}) //Logs false console.log(data === {}) //Logs false 为什么该语句返回false?您正在测试两个对象
{}
。我在AngularJS脚本中使用了一个ng show=“data.currentView=={}”
来检查它当前是否是默认视图,但从未显示。然后,我在Chrome的Javascript控制台中尝试了以下方法:
var data = {}
console.log(data == {})
//Logs false
console.log(data === {})
//Logs false
为什么该语句返回false?您正在测试两个对象是否是相同的对象,而不是它们是否是相同的对象 见: 如果类型(x)与类型(y)相同,那么…如果x和y引用相同的对象,则返回true。否则,返回false
您正在测试两个对象是否是相同的对象,而不是它们是否是相同的对象 见: 如果类型(x)与类型(y)相同,那么…如果x和y引用相同的对象,则返回true。否则,返回false
您正在将引用与对象进行比较,因此它们永远不相等。一个好办法是:
Object.keys(data.currentView).length == 0
您正在将引用与对象进行比较,因此它们永远不相等。一个好办法是:
Object.keys(data.currentView).length == 0