Maison > Article > interface Web > Pourquoi les chaînes JavaScript « 11 » et « 3 » sont-elles considérées comme vraies dans une comparaison lexicographique ?
Comparaison lexicographique des chaînes
La comparaison entre les chaînes "11" et "3" dans l'extrait de code donné suscite la curiosité en raison de résultat inattendu de vrai. Une hypothèse triviale pourrait être que la comparaison soit basée sur la longueur des chaînes, mais ce n'est pas le cas. Au lieu de cela, les chaînes JavaScript sont comparées de manière lexicographique.
La comparaison lexicographique fonctionne en comparant les séquences de points de code Unicode qui représentent les caractères des chaînes. Cela commence par comparer le premier caractère de chaque chaîne ; si ces caractères sont égaux, il procède à la comparaison des seconds caractères, et ainsi de suite. La comparaison cesse lorsque des caractères avec des points de code différents sont rencontrés ou lorsque l'une des chaînes manque de caractères.
Dans le cas de "11" et "3", les premiers caractères sont '1' et '3 '. Étant donné que « 1 » a un point de code Unicode inférieur à « 3 », « 11 » est inférieur à « 3 » selon la comparaison lexicographique. Ceci explique le résultat surprenant : une chaîne plus longue est considérée comme inférieure à une chaîne plus courte car elle contient un caractère avec un point de code inférieur.
Exemples :
'11' < '3' // true '31' < '3' // false '31' < '32' // true '31' < '30' // false 'abc' < 'aaa' // false 'abc' < 'abd' // true
Pour convertir explicitement une chaîne en un nombre, utilisez l'opérateur unaire plus ( ):
+'11' < '3' // false
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!