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