抽象相等()

抽象等式運算子的運算元轉換為公共型別進行比較。如何進行此轉換是基於運算子的規範:

== 運算子的規格:

7.2.13 抽象相等比較

比較 x == y,其中 xy 是值,產生 truefalse。這樣的比較如下進行:

  1. 如果 Type(x)Type(y) 相同,那麼:
  • **一個。**返回執行 Strict Equality Comparison x === y 的結果。
  1. 如果 xnullyundefined,則返回 true
  2. 如果 xundefinedynull,那麼返回 true
  3. 如果 Type(x)NumberType(y)String,則返回比較結果 x == ToNumber(y)
  4. 如果 Type(x)StringType(y)Number,則返回比較結果 ToNumber(x) == y
  5. 如果 Type(x)Boolean,則返回比較結果 ToNumber(x) == y
  6. 如果 Type(y)Boolean,則返回 comparison x == ToNumber(y) 的結果。
  7. 如果 Type(x)StringNumber,或 SymbolType(y)Object,則返回比較結果 x == ToPrimitive(y)
  8. 如果 Type(x) 是 Object 而 Type(y)StringNumberSymbol,則返回比較結果 ToPrimitive(x) == y
  9. 返回 false

例子:

1 == 1;                     // true
1 == true;                  // true  (operand converted to number: true => 1)
1 == '1';                   // true  (operand converted to number: '1' => 1 )
1 == '1.00';                // true
1 == '1.00000000001';       // false
1 == '1.00000000000000001'; // true  (true due to precision loss)
null == undefined;          // true  (spec #2)
1 == 2;                     // false
0 == false;                 // true
0 == undefined;             // false
0 == "";                    // true