Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Strings, números, operadores de comparação e tipos de variáveis

Fala, galera, beleza?

Vendo esta aula, identifiquei que à medida que o curso avança, vai se tornando mais complexo, e com essa complexidade, as possibilidades de utilização dos vários símbolos e recursos do JavaScript começam a aparecer. Mas o que eu estou querendo dizer com isso? É que no desenvolvimento do game de adivinhação numérica, criamos um palpite que é guardado em uma variável do tipo número (number para os íntimos). E no prompt que pede a adivinhação do usuário, a saída fornecida pelo código é uma string, ou seja, digitamos um palpite numérico, porém a função prompt "devolve" um valor do tipo texto!

No caso do nosso app de adivinhação, não há na prática grande problema, porém, como forma de organizar nosso código, faz sentido apresentar os operadores de comparação que utilizam o símbolo de igualdade =.

quando criamos uma variável (usando let ou const), utilizamos o símbolo de igual (=) para atribuir valores a essa variável, e tudo ok. Já quando queremos testar entre dois ou mais casos, o sentido do símbolo de igualdade se expande, pois temos dois e até três símbolos que podem ser utilizados. Vou explicar:

// testa se a string '5' e o número 5 são iguais
if('5' == 5) {
    alert('os valores são iguais');
};

Na comparação acima, o resultado é verdadeiro, pois para o programa, '5' e 5 são iguais, embora isso possa parecer estranho a nós, devs iniciantes.

Comparação estrita

Quando em outro contexto mais específico, precisamos diferenciar e testar não apenas os valores das variáveis, mas também levando em conta o tipo delas, podemos utilizar o operador de comparação que verifica não apenas se os valores sao iguais, mas testa também o tipo da variável.

// Aqui, serão testados o valor e o tipo da variável
let stringNumber = '5';
let number = 5;

// Embora os valores sejam parecidos, com o operador de comparação de tipos (===), a comparação retorna false
if (stringNumber === number) {
    alert('Os valores são iguais');
}else {
    alert('Os valores são diferentes')
};

Como o tipo de dado string é diferente do tipo number, a linha com o código else será executada, retornando a mensagem "Os valores são diferentes".

1 resposta
solução!

Oi Erick! Tudo bem?

Você fez uma excelente observação. Realmente, a compreensão dos operadores de igualdade e de comparação é fundamental para a lógica de programação.

No exemplo do jogo de adivinhação, estamos utilizando o operador de igualdade ==, que compara apenas os valores, mas não os tipos. Ou seja, ele faz uma coerção de tipos antes de fazer a comparação, por isso '5' == 5 retorna verdadeiro.

Se quisermos que a comparação leve em consideração também os tipos das variáveis, devemos usar o operador de igualdade estrita ===. Nesse caso, '5' === 5 retornaria falso, pois embora os valores sejam iguais, os tipos são diferentes (uma string e um número).

No contexto do jogo, o uso do operador == não traz problemas práticos, pois o valor digitado pelo usuário através da função prompt é sempre uma string, e o JavaScript faz a coerção de tipos automaticamente quando usamos ==. No entanto, em outros contextos, a distinção entre == e === pode ser muito importante para evitar bugs e comportamentos inesperados no código.

Um abraço e bons estudos.