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
Libérer: 2024-10-18 12:06:38
original
1085 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal