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

[Dúvida] Precedência de Conversão Implicita

No código abaixo que eu copiei da aula 04 Conversão de Tipos:

const numero = 456; const numerostring = "456"; console.log(numero == numerostring)

Neste caso o Terminal retorna true pois houve a conversão implícita da const numero em string.

Porque o Js converteu implicitamente a const numero em string? Para converter a const numeroString em número, somente funciona pela conversão explicita?

1 resposta
solução!

Oi Luciano!

A conversão é feita de número para string porque a conversão implícita feita com == segue algumas regras, e essa de converter para string é uma delas.

É possível "forçar" a comparação/conversão das seguintes formas:

  • Entre strings:
    `${a}` == `${b}`
  • Entre números:
    +a == +b
  • Entre booleanos:
    !a == !b

Porém, como sempre frisamos, o melhor mesmo é sempre usar === (o operador de equidade profunda) em conjunto com um método de conversão explícita, como Number(), que evitará esse tipo de problema com conversões implícitas.

Para mais informações você pode consultar a documentação do MDN sobre o operador de equalidade "rasa" (ou seja, ==) e também conferir a especificação do TC-39 para as comparações.

Espero ter ajudado!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!