Maison >interface Web >js tutoriel >Pourquoi la comparaison de chaînes lexicographiques de JavaScript fait-elle que « 11 » est inférieur à « 3 » ?

Pourquoi la comparaison de chaînes lexicographiques de JavaScript fait-elle que « 11 » est inférieur à « 3 » ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-18 12:06:381088parcourir

Why is JavaScript's Lexicographical String Comparison Causing

Comprendre la comparaison lexicographique de chaînes : pourquoi "11" est inférieur à "3" ?

En JavaScript, les chaînes sont comparées lexicographiquement, ce qui signifie un caractère par caractère, jusqu'à ce qu'une incompatibilité soit trouvée ou qu'une chaîne se termine. Ce comportement peut conduire à des résultats inattendus lors de la comparaison de chaînes qui représentent des nombres.

Comparaison lexicographique en action

Considérez le code suivant :

<code class="javascript">if ('11' < '3') alert('true');</code>

Ce code est évalué comme vrai car le premier caractère de « 11 » (« 1 ») est lexicographiquement inférieur au premier caractère de « 3 » (« 3 »). En d'autres termes, JavaScript compare les chaînes sous forme de séquences de caractères, et non sous forme de nombres.

Équivalence des codes de caractères

L'ordre lexicographique des caractères est basé sur leurs codes de caractères Unicode. Le code de caractère Unicode pour « 1 » est 49, tandis que le code pour « 3 » est 51. Puisque 49 est inférieur à 51, « 1 » précède « 3 » dans la séquence de caractères.

Exemples de scénarios

  • '31' < '3' : Faux, car '3' est supérieur à '1' lexicographiquement.
  • '31' < '32' : vrai, car "1" est inférieur à "2" lexicographiquement.
  • '31' < '30' : faux, car "0" est supérieur à "1" lexicographiquement.
  • 'abc' < 'aaa' : Faux, car 'b' n'est pas inférieur à 'a' lexicographiquement.
  • 'abc' < 'abd' : vrai, car "c" est inférieur à "d" lexicographiquement.

Conversion numérique explicite

Pour comparer des chaînes sous forme de nombres, ils peuvent être explicitement converti à l'aide de l'opérateur :

<code class="javascript">+'11' < '3': False</code>

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