Avatar ·

Diferença entre == e === em JavaScript

Olá a todos! Recentemente comecei a estudar JavaScript e Node.js, e me deparei com uma dificuldade em entender a diferença entre os operadores == e ===. Ambos parecem ser usados para comparação, mas os resultados às vezes são diferentes.

Aqui está um exemplo simples que me confundiu:

console.log(5 == '5');   // true
console.log(5 === '5');  // false

console.log(null == undefined);  // true
console.log(null === undefined); // false

console.log(false == 0);  // true
console.log(false === 0); // false

Eu entendo que === é um operador estrito, e == é não estrito, mas não compreendo completamente como isso funciona na prática. Tentei ler a documentação no MDN, mas gostaria de ouvir uma explicação de desenvolvedores experientes.

Espero obter esclarecimento:
1. Em quais casos == pode levar a erros inesperados?
2. Existem situações em que o uso de == é justificado (por exemplo, verificar null == undefined)?