【发布时间】:2014-07-01 18:45:54
【问题描述】:
我正在写一个脚本,我有类似的东西
var myObject = {};
if (myObject == {}){
...
}
我惊讶地发现这被评估为假。
我自己的发现
阅读了一些 javascript 的有趣怪癖,我发现 this article,它告诉 {} 将在 if 语句中产生一个“真实”对象,例如
if ({}){ // true
...
}
嗯,还有更进一步的准备讨论字符串相等,它用于对象比较,表示如果它们引用相同的对象,它将返回true。 (即使{} === {} 返回 false)
我认为返回 false 的唯一原因是对象在技术上位于不同的内存地址,因此被视为不同的对象。
【问题讨论】:
-
而你的最后一句话就是答案
-
你加粗了错误的单词,这是你误解的关键。 “如果他们引用相同的对象,它将返回true”应该说如果他们引用相同的对象,它将返回true。
-
你知道这不是一个问题,对吧?无论如何......我认为一个很好的解释是一个对象不能等于另一个对象。如果您有 2 个相同的橙子,这并不意味着它们是相同的橙子。
-
将这些括号的每个实例视为“MyObject myObj = new MyObject();”在静态语言中。简单的想法。
标签: javascript