Maison > Article > interface Web > Pourquoi un tableau vide semble-t-il à la fois vrai et faux en JavaScript ?
Dévoilement de la nature énigmatique des tableaux vides en JavaScript
Les tableaux vides en JavaScript présentent une dualité particulière, semblant être simultanément vrais et faux. Ce comportement déroutant provient de la conversion implicite effectuée par les opérateurs d'égalité. Pour approfondir les mécanismes sous-jacents, explorons l'extrait de code ci-dessous :
<br>var arr = [];<br>console.log('Array:', arr);<br>if (arr) console.log("C'est vrai !");<br>if (arr == false) console.log("C'est faux !");<br>if (arr && arr == false) console .log("...quoi ??");<br>
La première instruction if vérifie la présence de l'objet arr (Array est une instance de Object), renvoyant true. Cependant, l'instruction if avec arr == false compare la valeur de l'objet arr avec la valeur primitive de false. Pour effectuer cette comparaison, arr.toString() est implicitement invoqué, renvoyant une chaîne vide "".
Ce résultat s'explique par le comportement de Array.join(). Lorsque toString() est appelé sur un tableau, il renvoie le résultat concaténé de l'appel de join() sur ce tableau. Puisque le tableau est vide, le résultat est une chaîne vide, qui entre dans la catégorie des valeurs fausses en JavaScript. Ainsi, arr.toString() est évalué à false, ce qui fait que if (arr == false) renvoie true.
Le cas particulier de if (arr && arr == false) met en évidence le fonctionnement du ET logique ( &&) opérateur. Pour que l’ensemble de la déclaration soit vraie, les deux conditions doivent correspondre à des valeurs véridiques. arr en soi est véridique, mais arr == false est évalué à true en raison de la conversion implicite susmentionnée. Par conséquent, la conjonction est évaluée comme vraie, ce qui conduit au « C'est faux ! » apparemment contradictoire. sortie.
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!