JavaScript 的双等号 (==) 总是对称的吗?

发布于 2024-11-01 18:47:15 字数 301 浏览 1 评论 0原文

在很多情况下,JavaScript 的类型强制相等运算符是不可传递的。例如,请参阅“JavaScript 相等传递性很奇怪”。

但是,是否存在 == 不对称的情况?也就是说,其中 a == btrue,而 b == afalse

There are many cases in which JavaScript's type-coercing equality operator is not transitive. For example, see "JavaScript equality transitivity is weird."

However, are there any cases in which == isn't symmetric? That is, where a == b is true and b == a is false?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

行至春深 2024-11-08 18:47:15

应该是对称的。然而,在某些版本的IE中存在不对称的情况:

window == document; // true
document == window; // false

It's supposed to be symmetric. However, there is an asymmetric case in some versions of IE:

window == document; // true
document == window; // false
简单气质女生网名 2024-11-08 18:47:15

在 Javascript 中,== 始终是对称

规范说 :

注释 2 相等运算符
保持以下不变量:

  • A != B 相当于 !(A == B)
  • A == B 等同于 B == A,除了计算顺序不同
    A 和 B

In Javascript, == is always symmetric.

The spec says:

NOTE 2 The equality operators
maintain the following invariants:

  • A != B is equivalent to !(A == B).
  • A == B is equivalent to B == A, except in the order of evaluation of
    A and B.
冰雪梦之恋 2024-11-08 18:47:15

您的实际问题(运算符是否对称)的答案是肯定的。 ECMA-262 规范明确指出:

注意2 相等运算符保持以下不变量:

  • A != B 等价于 !(A == B)
  • A == B 等同于 B == A,除了 AB 的计算顺序不同。

The answer to your actual question (is the operator symmetric) is yes. The ECMA-262 spec explicitly states:

NOTE 2 The equality operators maintain the following invariants:

  • A != B is equivalent to !(A == B).
  • A == B is equivalent to B == A, except in the order of evaluation of A and B.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文