"10" en Javascript ? " /> "10" en Javascript ? " />
Quandaire de comparaison de chaînes Javascript/entiers : pourquoi "2" > "10" ?
La programmation Javascript a une bizarrerie particulière avec les comparaisons de chaînes et d'entiers. Bien que l'on puisse supposer que les chaînes numériques sont traitées comme des entiers, ce n'est pas toujours le cas, ce qui entraîne des conséquences inattendues. résultats.
Considérez le code déroutant suivant :
console.log("2" > "10");
Au grand étonnement de beaucoup, ce code est évalué comme vrai. Pourquoi « 2 » serait-il supérieur à « 10 » ?
.Le problème sous-jacent réside dans le traitement inhérent par Javascript des chaînes et des entiers. Lors de la comparaison de deux chaînes, Javascript effectue une comparaison lexicographique basée sur. leurs points de code Unicode Dans ce cas, le point de code ASCII pour « 2 » (50) est inférieur au point de code pour « 10 » (56), ce qui fait que « 2 » est considéré comme « inférieur à » « 10 » dans un. comparaison de chaînes.
Pour résoudre ce dilemme et comparer avec précision les valeurs numériques sous forme d'entiers, il est crucial d'analyser manuellement la chaîne en un entier. Cela peut être réalisé à l'aide de la fonction parseInt, qui. prend une chaîne et une base de base comme arguments.
Par exemple, pour convertir la chaîne "2" en un entier et effectuer une comparaison significative avec "10":
alert(parseInt("2", 10) > parseInt("10", 10));
Ce code est correctement évalué à faux, car "2" est en effet inférieur à "10" lorsque les deux sont traités comme des entiers.
En employant une analyse méticuleuse des chaînes, on peut éviter les pièges du comportement déroutant de comparaison chaîne/entier de Javascript et garantir des comparaisons numériques fiables.
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!