【发布时间】:2026-01-30 01:35:02
【问题描述】:
if (typeof a !== "object" && typeof b !== "object") {
return a == b;
}
... // check pairwise equality of object a & b using `for in`
和
一样吗if (typeof a !== "object") {
return a == b;
}
是否有 b 和 typeof b === "object" 会改变语义?
我应该注意哪些可怕的边缘情况? object 和 native type 之间的比较具有非直观的布尔相等或不相等?包括浏览器中的任何错误(我的意思是你的 IE6!)
【问题讨论】:
-
这取决于您关心的问题,例如
var a = "[object Object]";和var b = {}在您的第二次检查中会相等,但不是第一次。 -
@NickCraver 哎呀!这是一个可怕的副作用!基本上我担心对象等于这样的东西。
-
@Nick:写在答案中,因为它是:“[object Object]”== {},回答这一行:Is there any
bwithtypeof b === "object"这会改变语义? -
记住 javascript 有自动类型转换 - 如果你愿意,你可以通过
a===b来解决这个问题 -
@MartinJespersen 我知道我在用类型强制做什么(部分)只是想找到像上面那个可怕的边缘情况。
标签: javascript equals equality typeof type-coercion