MDC descrive l' ==
operatore come segue :
Se i due operandi non sono dello stesso tipo, JavaScript converte gli operandi quindi applica un confronto rigoroso. Se uno degli operandi è un numero o un booleano, gli operandi vengono convertiti in numeri se possibile; altrimenti se uno degli operandi è una stringa, l'altro operando viene convertito in una stringa, se possibile.
Con questo in mente, valuterei "true" == true
quanto segue:
- Sono dello stesso tipo? No
- L'operando è un numero o un valore booleano? sì
- Possiamo convertirli entrambi in un numero? No (
isNaN(Number("true")) // true
) - Uno degli operandi è una stringa? sì
- Possiamo convertire l'altro operando in una stringa? Sì (
String(true) === "true" // true
)
Ho finito con le stringhe "true"
e "true"
, che dovrebbe restituire true
, ma JavaScript mostra false.
Cosa mi sono perso?