Maison > Article > interface Web > Pourquoi « 0 » est-il égal à faux, mais c'est vrai lorsqu'il est testé avec if en JavaScript ?
Puzzle d'égalité JavaScript : "0" est faux, mais c'est vrai lorsqu'il est testé avec if
Les opérateurs d'égalité JavaScript peuvent conduire à des résultats inattendus, comme le démontre le code suivant :
console.log("0" == false); // true console.log(false == "0"); // true
Ce code implique que la chaîne "0" est équivalente à la valeur booléenne false. Cependant, le code suivant affiche « ha » alors que la condition est « 0 » :
if ("0") console.log("ha"); // ha
Pourquoi cela se produit-il ?
Pour comprendre ce comportement, nous avons besoin pour comprendre les valeurs véridiques et fausses de JavaScript. En JavaScript, les valeurs suivantes sont fausses :
false 0 "" null undefined NaN
Toutes les autres valeurs sont véridiques.
Dans les deux premières lignes de l'extrait de code, l'opérateur d'égalité (==) effectue une coercition de type pour comparer la chaîne "0" avec la valeur booléenne false. Puisque "0" est une valeur fausse, elle est considérée comme égale à faux.
Cependant, l'instruction if dans la troisième ligne de code utilise l'égalité stricte (===), qui ne prend en compte que les valeurs du même type. comme égaux. Puisque "0" est une chaîne et false est un booléen, la condition est évaluée comme fausse.
Pour éviter toute confusion, il est recommandé d'utiliser l'égalité stricte (===) lors de la comparaison de valeurs en JavaScript. Le code modifié suivant affichera « rien » :
if ("0" === false) console.log("ha"); // nothing
En comprenant la différence entre l'égalité (==) et l'égalité stricte (===), vous pouvez écrire du code JavaScript qui compare avec précision les valeurs.
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!