Maison  >  Article  >  interface Web  >  Pourquoi « 0 » est-il égal à faux, mais c'est vrai lorsqu'il est testé avec if en JavaScript ?

Pourquoi « 0 » est-il égal à faux, mais c'est vrai lorsqu'il est testé avec if en JavaScript ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-04 19:19:02903parcourir

Why Does

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn