为什么{} == {}会返回false?

Jac*_*nta 0 javascript

我正在写剧本,我有类似的东西

var myObject = {};

if (myObject == {}){
    ...
}
Run Code Online (Sandbox Code Playgroud)

我惊讶地发现这被评估为假.

我自己的发现

阅读javascript所做的一些有趣的问题,我发现这篇文章,它告诉我们{}会在if语句中产生一个"truthy"对象,例如

if ({}){ // true
    ...
}
Run Code Online (Sandbox Code Playgroud)

嗯,进一步准备好讨论String Equality,对于对象比较,如果它们引用相同的对象,它将返回true .(甚至{} === {}返回false)

我能想到的唯一原因是返回false是因为对象在技术上处于不同的内存地址,因此被认为是不同的对象.

nic*_*ael 10

因为每个人{}创造一个独特的对象 你不能那样比较它们.

  • 我通常不建议使用`JSON.stringify`来比较对象.它将剥离函数并对非JSON类型执行其他操作.观察`JSON.stringify({r:/ r /})== JSON.stringify({r:{}})` (2认同)