MDC décrit l' ==
opérateur comme suit :
Si les deux opérandes ne sont pas du même type, JavaScript convertit les opérandes puis applique une comparaison stricte. Si l'un des opérandes est un nombre ou un booléen, les opérandes sont convertis en nombres si possible; sinon si l'un des opérandes est une chaîne, l'autre opérande est converti en chaîne si possible.
Dans cet esprit, j'évaluerais "true" == true
comme suit:
- Sont-ils du même type? Non
- Est-ce que l'opérande est un nombre ou un booléen? Oui
- Pouvons-nous convertir les deux en un nombre? Non (
isNaN(Number("true")) // true
) - Est-ce que l'un ou l'autre des opérandes est une chaîne? Oui
- Pouvons-nous convertir l'autre opérande en chaîne? Oui (
String(true) === "true" // true
)
J'ai fini avec les chaînes "true"
et "true"
, qui devraient être évaluées à true
, mais JavaScript montre false.
Qu'est-ce que j'ai manqué?