Avatar ·

Pode a expressão (a == 1 && a == 2 && a == 3) ser true em JavaScript?

Olá a todos! Recentemente comecei a estudar JavaScript e me deparei com um problema muito estranho. Ele verifica se a condição `(a == 1 && a == 2 && a == 3)` pode ser verdadeira (true) em algum momento. À primeira vista, parece um absurdo completo — como a mesma variável pode ser igual a três números diferentes ao mesmo tempo? Se eu escrever um código normal: ```javascript let a = 1; console.log(a == 1 && a == 2 && a == 3); // false ``` Então, claro, recebo false. Mas ouvi dizer que em JavaScript existem alguns truques com coerção de tipos que podem tornar essa expressão verdadeira. Eu sei que `==` (igualdade não estrita) pode fazer coerção de tipos, mas ainda assim não entendo como isso é possível. Expliquem, por favor, é possível fazer essa condição funcionar? Se sim, como? E, principalmente, por quê? Isso é algum tipo de magia ou uma característica da linguagem? Agradeço por uma explicação detalhada com exemplos de código. <<>>

Sim, é possível! E aqui está como funciona

Você está certo, à primeira vista parece impossí