Le MDC décrit le ==
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 de caractères, l'autre opérande est converti en chaîne de caractères si possible.
Dans cette optique, j'évaluerais "true" == true
comme suit :
- Sont-ils du même type ? Non
- L'un des opérandes est-il un nombre ou un booléen ? Oui
- Peut-on convertir les deux en un nombre ? Non (
isNaN(Number("true")) // true
) - L'un des deux opérandes est-il une chaîne de caractères ? Oui
- Peut-on convertir l'autre opérande en une chaîne de caractères ? Oui (
String(true) === "true" // true
)
Je me suis retrouvé avec les cordes "true"
et "true"
ce qui devrait donner true
mais JavaScript montre faux.
Qu'est-ce que j'ai manqué ?