Pode (a == 1 && a == 2 && a == 3) ser true em JavaScript?
Olá a todos! Sou novo em JavaScript e me deparei com uma tarefa estranha em uma entrevista. Me perguntaram: a expressão `(a == 1 && a == 2 && a == 3)` pode ser verdadeira?
À primeira vista, parece um absurdo completo. Como a mesma variável `a` pode ser igual a 1, 2 e 3 ao mesmo tempo? Em qualquer linguagem de programação normal, isso é impossível. Mas me disseram que em JavaScript existem truques que permitem fazer isso.
Eu entendo que isso está relacionado às peculiaridades de coerção de tipos (type coercion) em JavaScript, mas não consigo entender exatamente como funciona. Se usarmos comparação estrita `===`, esse truque definitivamente não funciona, mas com o não estrito `==` existem algumas brechas.
Talvez alguém possa explicar como isso é possível? Estou interessado não apenas em implementações específicas.