Operadores y Comparación Estricta
Aprende a realizar operaciones matemáticas y lógicas, y comprende por qué en JavaScript siempre debes usar igualdad estricta (===) en lugar de igualdad débil (==).
Operadores Aritméticos y Asignación
JavaScript provee todos los operadores de cálculo estándar para manipular números y variables numéricas:
+(Suma),-(Resta),*(Multiplicación),/(División).%(Módulo o resto): Retorna el residuo de una división entera (ej:10 % 3resulta en1). Muy útil para saber si un número es par o impar.**(Exponenciación): Calcula potencias (ej:2 ** 3es8).++y--: Incremento y decremento en una unidad.
Igualdad Estricta (===) vs Igualdad Débil (==)
| Operador | Nombre | ¿Cómo Compara? | Ejemplo |
|---|---|---|---|
=== |
Igualdad Estricta | Compara valor Y tipo de dato. No realiza conversión implícita. Es el estándar recomendado. | 5 === "5" resulta false (número vs texto). |
== |
Igualdad Débil | Convierte los tipos antes de comparar (coerción implícita). Fuente común de errores y vulnerabilidades. | 5 == "5" resulta true. |
!== |
Desigualdad Estricta | Retorna true si los valores o los tipos son diferentes. |
5 !== "5" resulta true. |
Operadores Lógicos y Coalescencia Nula (??)
Para combinar condiciones lógicas se usan && (Y lógico), || (O lógico) y ! (Negación).
En ES2020 se introdujo el operador Nullish Coalescing (??), que retorna el valor de la derecha únicamente si el valor de la izquierda es estrictamente null o undefined:
let intentos = 0;
// Con || el 0 se considera "falsy" y toma el valor por defecto:
let val1 = intentos || 10; // 10 (Incorrecto si 0 era un valor válido)
// Con ?? solo se reemplaza si es null o undefined:
let val2 = intentos ?? 10; // 0 (Correcto)
⚡ Comparación Estricta vs Débil en Vivo
Ingresa un número y compáralo contra un string con ambos operadores para ver la diferencia en tiempo real:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Operadores de Comparación en JS</title>
<style>
body { font-family: Arial, Helvetica, sans-serif; padding: 25px; background: #f8fafc; }
.card-comp { max-width: 520px; background: white; border: 1px solid #cbd5e1; border-radius: 8px; padding: 22px; }
.resultado-caja { background: #f1f5f9; border-left: 4px solid #0284c7; padding: 12px; margin-top: 15px; border-radius: 4px; }
.btn { background: #0284c7; color: white; border: none; padding: 8px 16px; border-radius: 6px; cursor: pointer; font-weight: bold; }
</style>
</head>
<body>
<div class="card-comp">
<h3 style="margin-top: 0; color: #0f172a;">Calculadora de Comparación</h3>
<p>Vamos a comparar el número <code>10</code> contra el texto <code>"10"</code>:</p>
<button class="btn" onclick="ejecutarComparacion()">Evaluar Operadores</button>
<div id="resultado" class="resultado-caja">
Presiona el botón para ejecutar la prueba...
</div>
<script>
function ejecutarComparacion() {
const num = 10;
const str = "10";
const resDebil = (num == str);
const resEstricto = (num === str);
document.getElementById('resultado').innerHTML = `
<strong>Resultados:</strong><br>
• Débil: <code>10 == "10"</code> → <strong>${resDebil}</strong> (hizo conversión automática)<br>
• Estricto: <code>10 === "10"</code> → <strong style="color: #ef4444;">${resEstricto}</strong> (detectó que son tipos diferentes)<br>
<br>
<small>💡 <em>Conclusión: Usa siempre <code>===</code> para evitar bugs inesperados.</em></small>
`;
}
</script>
</div>
</body>
</html>
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual Completo de JavaScript ES6+ y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.