JavaScript Equality astratta (==)


Esempio

Gli operatori dell'operatore di uguaglianza astratta vengono confrontati dopo essere stati convertiti in un tipo comune. Come avviene questa conversione si basa sulle specifiche dell'operatore:

Specifica per l'operatore == :

7.2.13 Paragone di uguaglianza astratta

Il confronto x == y , dove x ed y sono valori, produce true o false . Tale confronto viene eseguito come segue:

  1. Se Type(x) è uguale a Type(y) , allora:
  • un. Restituisce il risultato dell'esecuzione del Confronto di uguaglianza rigorosa x === y .
  1. Se x è null e y undefined è undefined , restituisce true .
  2. Se x undefined è undefined e y è null , restituisce true .
  3. Se Type(x) è Number e Type(y) è String , restituisce il risultato del confronto x == ToNumber(y) .
  4. Se Type(x) è String e Type(y) è Number , restituisce il risultato del confronto ToNumber(x) == y .
  5. Se Type(x) è Boolean , restituisce il risultato del confronto ToNumber(x) == y .
  6. Se Type(y) è Boolean , restituisce il risultato del comparison x == ToNumber(y) .
  7. Se Type(x) è String , Number o Symbol e Type(y) è Object , restituisce il risultato del confronto x == ToPrimitive(y) .
  8. Se Type(x) è Object e Type(y) è String , Number o Symbol , restituisce il risultato del confronto ToPrimitive(x) == y .
  9. Restituire false .

Esempi:

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