回答

26

在Javascript中,==永遠是symmetric

spec says

注2個相等運算 維護以下不變量:

  • A != B相當於!(A == B)
  • A == B相當於B == A,除了在評價 A and B的順序。
+2

不應該是*交換*? – 2011-04-14 20:50:22

+8

@Shtééf:也許它應該是,但事實並非如此。 http://en.wikipedia.org/wiki/Symmetric_relation關係不是運營商。 – SLaks 2011-04-14 20:52:00

+0

感謝您的糾正 - 從我拿起數學學位起,這已經太長了! – 2011-04-14 21:32:26

10

對您的實際問題(是運算符對稱)的答案是肯定的。該ECMA-262規範明確規定:

注2:等式運算維持不變如下:

  • A != B相當於!(A == B)
  • A == B相當於B == A,除了評估順序爲AB
+0

你可以在http://ecma262-5.com找到這個規範的深層HTML版本 – SLaks 2011-04-14 20:53:07

32

這是假設是對稱的。但是,在某些版本的IE中存在不對稱情況:

window == document; // true 
document == window; // false 
+11

哇,真是太棒了。你能指定哪些版本的IE出現這種情況嗎? – 2011-04-14 21:35:05

+0

在Win8.0上使用IE10我在「瀏覽器模式:IE8」(不是在IE10,IE9或* IE7 *模式下)看到了這種行爲。 – Jeroen 2014-05-13 19:51:05

相關問題