Maison > Article > interface Web > Pourquoi « 0 » est-il évalué comme vrai dans une instruction if mais faux dans une comparaison ?
En JavaScript, l'évaluation d'une valeur dans un contexte logique, comme dans Les instructions if ou les comparaisons booléennes peuvent produire des résultats inattendus. Ce comportement est dû au mécanisme de coercition de type de JavaScript.
JavaScript tape ses valeurs de manière lâche, et lorsqu'une valeur de chaîne ou de nombre est utilisée dans un contexte logique, il subit une coercition de type pour la convertir en valeur booléenne. Dans cette conversion, les chaînes non vides et les nombres non nuls sont évalués à vrai, tandis que les chaînes vides et les nombres nuls sont évalués à faux.
Par conséquent, lorsque vous comparez « 0 » à faux en utilisant == ou === , il renvoie true car la coercition de type convertit à la fois "0" (une chaîne non vide) et false (une valeur de type zéro) en vrai.
Cependant, lors de l'utilisation d'une instruction if, "0" seul évalue à vrai. En effet, si les instructions utilisent en interne une valeur booléenne forcée, qui renvoie vrai pour les chaînes non vides.
Pour éviter toute ambiguïté, il est recommandé d'utiliser l'opérateur d'égalité stricte === lors de la comparaison de valeurs primitives, comme il effectue une comparaison sans contrainte de type. Cela garantit que "0" est correctement évalué comme faux lorsque cela est nécessaire.
Référez-vous aux tableaux ci-joints pour une représentation concise du comportement véridique/faux de JavaScript pour différents types de données. N'oubliez pas que pour de véritables comparaisons d'égalité, optez toujours pour ===.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!