Igualdad débil vs estricta en JavaScript

Clase 10 de 39Curso de Fundamentos de JavaScript

Resumen

Aprende a controlar resultados y evitar errores comunes al comparar valores en JavaScript. Aquí verás cómo la coerción de tipos afecta la igualdad débil (==) y por qué la igualdad estricta (===) y la desigualdad estricta (!==) son la práctica recomendada para comparaciones seguras.

¿Qué son y por qué importan los operadores de comparación en JavaScript?

Comparar valores parece simple, pero en JavaScript interviene la coerción. Con la igualdad débil el motor intenta convertir tipos antes de comparar, lo que produce resultados inesperados. La igualdad estricta compara valor y tipo, evitando conversiones implícitas.

¿Cómo funciona la igualdad débil == con coerción de tipos?

Con == se comparan valores permitiendo conversión de tipos. Esto puede dar verdaderos que sorprenden.

console.log(5 == '5');      // true
console.log(true == 1);     // true
console.log(false == 0);    // true
console.log(null == undefined); // true

Claves: - La coerción intenta alinear tipos antes de comparar. - Valores distintos como número 5 y string '5' pueden considerarse iguales. - En contexto booleano, combinaciones como null y undefined terminan siendo equivalentes. - Estos casos dificultan el control de errores y la lectura del código.

¿Qué hace la desigualdad débil != en los mismos casos?

También aplica coerción y puede confundir.

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

Puntos a notar: - Se convierte 5 a string y se compara con '5'. - Como los ve iguales tras convertir, la desigualdad resulta falsa.

¿Qué resuelve la igualdad estricta === y la desigualdad estricta !==?

La comparación estricta evita conversiones implícitas: verifica valor y tipo. Así, se eliminan ambigüedades y el resultado es predecible. Es la forma recomendada para comparar en JavaScript cuando necesitas precisión.

¿Cómo comparar valor y tipo sin sorpresas?

Con === solo es true si coinciden valor y tipo.

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

Ventajas prácticas: - No hay coerción de tipos. - El código es más claro y fácil de depurar. - Los errores por conversiones implícitas se reducen.

¿Cómo negar con !== para validar diferencias reales?

Con !== se verifica que o el valor o el tipo (o ambos) sean distintos.

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

Buenas prácticas: - Usa === y !== por defecto. - Evita == y != para prevenir resultados inesperados.

¿Qué habilidades y conceptos practicar para evitar errores?

Para dominar estas comparaciones, fortalece estas capacidades en tu flujo de trabajo:

  • Entender la coerción de tipos y sus efectos en == y !=.
  • Distinguir entre número, string, y valores especiales como null y undefined.
  • Usar console.log para verificar resultados rápidamente.
  • Escribir comentarios claros que expliquen la elección del operador.
  • Preferir igualdad estricta para comparar con seguridad.
  • Probar casos límite: números vs. strings, booleanos vs. números, null y undefined.

¿Ya probaste estos ejemplos en tu editor? Comparte tu resultado y el reto que te planteaste en los comentarios.