Anomalias de comparação de strings: por que "11" é menor que "3" em JavaScript
O comportamento de comparação de strings do JavaScript pode ser contra-intuitivo às vezes. Um exemplo é a desigualdade '11'
Em JavaScript, strings são comparadas lexicograficamente caractere por caractere, da esquerda para a direita. Quando os caracteres são diferentes, a comparação é baseada nos pontos de código Unicode. O código ASCII para '1' é 49, enquanto o de '3' é 51. Portanto, o primeiro caractere de '11' (com um ponto de código 49) é menor que o primeiro caractere de '3' (com um código ponto de 51), resultando na desigualdade '11'
Aqui estão alguns exemplos adicionais para ilustrar esse comportamento:
É importante observe que as mesmas regras de comparação se aplicam às cartas. Se 'b' não for menor que 'a', 'abc' não pode ser menor que 'aaa'. No entanto, 'c' é menor que 'd', então 'abc' é menor que 'abd'.
Para evitar tais anomalias ao comparar strings como números, é recomendado convertê-las explicitamente usando o operador ' ' :
'11'
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3