Control de Flujo
La igualdad en JavaScript
Existen dos operadores de igualdad en JavaScript:
| Operador | Nombre | Compara valores | Compara tipos | 
|---|---|---|---|
| == | Igualdad débil (loose) | ✅ Sí | ❌ No | 
| === | Igualdad estricta (strict) | ✅ Sí | ✅ Sí | 
Error común
Muchos principiantes usan == por error cuando deberían usar ===, lo que puede dar resultados inesperados.
Ejemplo clave:
5 == "5";   // ✅ true5 === "5";  // ❌ false (distintos tipos)Casos raros con ==:
0 == "";         // true0 == [];         // true"" == [];        // truenull == undefined; // true
0 == null;       // falsefalse == "false" // false"true" == true // false"false" == false // falseEstas inconsistencias hacen que == sea poco confiable.
Recomendación:
Siempre usa
===(igualdad estricta) a menos que tengas un motivo muy claro para no hacerlo.
Si necesitas comparar un número y una cadena, convierte explícitamente:
Number("5") === 5 // trueComparación de objetos y arrays
¿Cómo comparar el contenido de objetos o arrays?
Esto se llama comparación profunda o deep equality, y requiere:
- Comprobar cada clave y valor manualmente
- Usar utilidades como lodash.isEqualo escribir una función recursiva.
Resumen
| Situación | Resultado | 
|---|---|
| 5 == "5" | ✅ true(coerción de tipos) | 
| 5 === "5" | ❌ false | 
| { a: 1 } === { a: 1 } | ❌ false(distintas referencias) | 
| obj1 === obj2(misma referencia) | ✅ true | 
| null == undefined | ✅ true | 
| null === undefined | ❌ false | 
Conclusión
- Usa ===siempre para evitar errores inesperados.
- No compares objetos o arrays con ===, a menos que sepas que son la misma referencia.
- Para comparar contenidos, necesitarás deep equality.
Las sentencias if en JavaScript
Las sentencias if permiten ejecutar código condicionalmente en función de si una condición es verdadera o falsa.
Sintaxis básica
if (condición) {  // Código si la condición es verdadera} else if (otraCondición) {  // Código si la otra condición es verdadera} else {  // Código si ninguna condición es verdadera}¿Qué es truthy y falsy?
JavaScript convierte automáticamente cualquier valor en true o false al evaluarlo en una condición.
- Valores que se comportan como truese llaman truthy
- Valores que se comportan como falsese llaman falsy
🔻 Valores falsy en JavaScript (solo 7):
- false
- 0
- -0
- 0n(BigInt cero)
- ""(cadena vacía)
- null
- undefined
- NaN
Todo lo demás es truthy, incluso:
- [](array vacío)
- {}(objeto vacío)
- Infinity
- '0'(cadena con un cero)
Ejemplo práctico:
let mensaje = "";
if (mensaje) {  console.log("Mensaje no está vacío");} else {  console.log("Mensaje está vacío");}// Output: "Mensaje está vacío" porque "" es falsyOperadores lógicos en condiciones
Puedes combinar condiciones usando estos operadores booleanos:
| Operador | Signo | Ejemplo | Significado | 
|---|---|---|---|
| AND | && | if (x > 0 && x < 10) | Las dos condiciones deben ser verdaderas | 
| OR | || | if (x > 0 || x > 10) | Una de las dos condiciones debe ser verdadera | 
| NOT | ! | if (!activo) | Niega el valor | 
Ejemplo:
const edad = 20;const tienePermiso = true;
if (edad >= 18 && tienePermiso) {  console.log("Puedes entrar");}¡Cuidado con los falsos positivos!
Ejemplos extraños usando == (no recomendado):
console.log(0 == "");         // trueconsole.log([] == false);     // trueconsole.log(null == undefined); // true✅ Mejor siempre usar === y tener presente la lista de valores falsy.
Resumen
- Usa ifpara tomar decisiones en tu código.
- Recuerda que no solo los booleanos se evalúan como condiciones.
- Memoriza los 7 valores falsy.
- Usa operadores lógicos (&&,||,!) para construir condiciones más complejas.
Los bucles for en JavaScript
Los bucles permiten ejecutar un bloque de código varias veces. En JavaScript, existen varias formas de usar for, dependiendo del tipo de dato y del objetivo.
Bucle for clásico (estilo C/Java)
for (let i = 0; i < array.length; i++) {  console.log(array[i]);}- 
Tres partes separadas por ;:- Inicialización (let i = 0)
- Condición (i < array.length)
- Incremento (i++)
 
- Inicialización (
- 
Es propenso a errores como off-by-one. 
- 
Se recomienda solo cuando necesitas acceso al índice. 
Bucle for...of
for (let item of array) {  console.log(item);}- Recorre todos los elementos de un array.
- Es más legible y limpio.
- Ideal cuando no necesitas el índice, solo los valores.
- Puedes usar cualquier nombre de variable (item,persona,libro, etc.).
Bucle for...in
for (let clave in objeto) {  console.log(clave, objeto[clave]);}- Recorre todas las propiedades de un objeto.
- Usa inen lugar deof→ ¡no confundir!
- claveserá el nombre de cada propiedad (- nombre,- edad, etc.).
Método forEach()
array.forEach(function(elemento) {  console.log(elemento);});O con arrow function:
array.forEach(elemento => console.log(elemento));- Es un método de los arrays.
- Recibe una función como argumento que se ejecuta para cada elemento.
- No es un forclásico, pero se comporta como un bucle.
- Muy usado en programación moderna.
¿Cuál usar?
| Caso de uso | Opción recomendada | 
|---|---|
| Recorrer un array y necesitas el índice | forclásico | 
| Recorrer los valores de un array | for...ofoforEach | 
| Recorrer las propiedades de un objeto | for...in | 
| Usar programación funcional | forEach | 
Resumen visual
| Tipo | Uso principal | Sobre qué funciona | 
|---|---|---|
| forclásico | Bucle con índice | Arrays | 
| for...of | Recorrer elementos directamente | Arrays, cadenas | 
| for...in | Recorrer claves/propiedades | Objetos | 
| forEach() | Función aplicada a cada elemento | Arrays | 
 
 