JavaScript: Dúvida booleana

31/07/2019

0

Bom dia pessoal, tudo bem?
Estou praticando JavaScript e resumindo, me surgiu uma dúvida com as strings abaixo:

no Node, por exemplo...
Por que "23" > "157" é (true)?
Assim como "10" > "157" (false)
..."1" > "157" é (false)
e "9" > "157" é (true)

Espero ter simplificado bem a pergunta e agradeço quem puder me ajudar nessa dúvida :)
Fernando Barros

Fernando Barros

Responder

Post mais votado

31/07/2019

Cara isso não é sobre booleans, mas sim programação de baixo nível, é um assunto muito avançado então sugiro que você deixe pra lá, mas vou tentar explicar de uma forma que não bugue seu cérebro, primeiramente cada caractere do teclado tem um valor numérico dentro do computador, repare que eu utilizei a palavra CARACTERE, pois cada número tem um valor dentro do computador, mas os números existem tanto na forma de caractere quanto na forma de números(ou seja, os tipos primitivos), então o número 1 e o o caractere 1 são representados por valores diferentes dentro da máquina, quando você compara o número 23 com o número 157, os valores que estão sendo comparados são totalmente diferentes de quando você compara a string 23 e a string 157, no primeiro caso o resultado é que 157 é maior, no segundo 23 é maior, agora vem a questão, o que caracteres tem a ver com strings?, bom se você estudar a linguagem c que é um pouco mais baixo nível(e foi usada para criar todas as linguagens modernas) vai ver que não existem strings lá, as strings são arrays de caracteres, nas linguagens modernas eles resolveram incluir esses arrays já na forma de string, mas lá no fundo não deixaram de ser arrays, mas os valores que a máquina atribui aos caracteres não são completamente aleatórios, se você olhar uma tabela ANSII(tabelinha que contém os valores interpretados pela máquina) vai ver que é bem organizadinha, então na tabela 1<2<3... etc, mas só existem os caracteres de 0 a 9, até por que não existe sentido em colocar um valor extremamente específico como 157 no teclado já que se pode digitá-lo com os dez números que já se tem, vou supor aqui que o valor do caractere dentro da máquina é ele mesmo(então no meu exemplo 23=23 e 157=157), o que você deve estar pensando é que dentro da máquina serão interpretados os valores 23 e 157, mas não, a máquina irá adicionar zeros no final da equação até que os dois arrays de caracteres(vulgo strings) estejam com a mesma quantidade de caracteres, então a verdadeira comparação que está sendo feita aqui é 230 e 157, e obviamente 230 é maior, por isso na sua comparação 23 foi maior que 157, 9 foi maior que 157, mas 1 e 10 foram menores.

Sadasd

Sadasd
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar