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!