Operadores de comparação
Ao comparar valores em JavaScript, usar o operador errado pode introduzir bugs silenciosos. Em código real, == converte os operandos para o mesmo tipo antes de comparar, o que leva a resultados inesperados como 0 == false ser verdadeiro. Já === exige igualdade de tipo e valor, sendo mais previsível. Dominar essa diferença evita armadilhas comuns em validações e lógicas condicionais.
O PROBLEMA
Demonstre a diferença entre == e === com exemplos de coerção de tipo. Compare: 0 == false, 0 === false, "" == false, null == undefined.
EXEMPLO
0 == false → true 0 === false → false "" == false → true null == undefined → true null === undefined → false
SOBRE O CONCEITO
O operador == realiza coerção de tipo, convertendo automaticamente os operandos para um tipo comum antes da comparação. Por exemplo, 0 == false resulta em true porque false é convertido para 0. Já === não faz coerção: 0 === false retorna false pois tipos diferentes (number vs boolean) já impedem a igualdade. O mesmo ocorre com "" == false (true, pois string vazia vira 0 e false vira 0) e null == undefined (true, por regra especial da linguagem), enquanto null === undefined é false. O erro comum é usar == e acreditar que a comparação será estrita, gerando bugs difíceis de encontrar. Prefira === a menos que tenha um motivo explícito para permitir coerção.
RESOLUÇÃO