Anomalies de comparaison de chaînes : pourquoi "11" est inférieur à "3" en JavaScript
Le comportement de comparaison de chaînes de JavaScript peut parfois être contre-intuitif. Un tel exemple est l'inégalité '11' < '3', qui renvoie étonnamment vrai.
En JavaScript, les chaînes sont comparées lexicographiquement caractère par caractère, de gauche à droite. Lorsque les caractères sont différents, la comparaison est basée sur leurs points de code Unicode. Le code ASCII de « 1 » est 49, tandis que celui de « 3 » est 51. Par conséquent, le premier caractère de « 11 » (avec un point de code de 49) est inférieur au premier caractère de « 3 » (avec un code point de 51), ce qui donne l'inégalité '11' < '3'.
Voici quelques exemples supplémentaires pour illustrer ce comportement :
Il est important de noter que les mêmes règles de comparaison s'appliquent aux lettres. Si « b » n'est pas inférieur à « a », « abc » ne peut pas être inférieur à « aaa ». Cependant, « c » est inférieur à « d », donc « abc » est inférieur à « abd ».
Pour éviter de telles anomalies lors de la comparaison de chaînes sous forme de nombres, il est recommandé de les convertir explicitement à l'aide de l'opérateur « » :
<code class="js">+'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!