Maison >interface Web >js tutoriel >Pourquoi « 2 » > « 10 » renvoie-t-il vrai en JavaScript ?
"10" Renvoyer vrai en JavaScript ? " /> "10" Renvoyer True en JavaScript ? " />
Javascript : énigme imprévue de comparaison chaîne-entier
Dans le domaine du développement Web, il est souvent nécessaire de comparer des paramètres stockés sous forme de chaînes ou d'entiers. Cependant , un bug particulier est apparu, laissant les développeurs perplexes. Les comparaisons d'entiers semblent se comporter de manière erratique, comme si les paramètres étaient plutôt traités comme des chaînes.
Considérez cet exemple déroutant : lorsque le code console.log(" 2" > "10") est exécuté, il renvoie "true" de manière inattendue. Cela défie toutes les attentes logiques, étant donné que 2 est numériquement plus petit que 10.
Alors, quelle est la racine de ce comportement particulier ? Il s'avère que les opérateurs de comparaison Javascript effectuent des comparaisons lexicales par défaut. Cela signifie que lors de la comparaison de chaînes et d'entiers, les chaînes sont traitées comme des points de code Unicode et comparées caractère par caractère. Dans ce cas, le premier « 2 » dans la chaîne « 2 ». est lexicalement supérieur au premier « 1 » dans « 10 », d'où le résultat.
Pour résoudre ce problème, il est essentiel d'analyser explicitement les paramètres de chaîne en nombres entiers. Ceci peut être réalisé à l'aide de la fonction parseInt, comme démontré dans le code suivant :
console.log(parseInt("2", 10) > parseInt("10", 10));
En analysant les chaînes en entiers, nous garantissons que les comparaisons numériques sont effectuées correctement sans tomber dans des pièges lexicaux.
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!