Lección 6 · 6 de 20
Comparaciones, lógica y truthy · JavaScript
La diferencia entre === y == en JavaScript, los operadores lógicos &&, || y !, y qué valores cuentan como verdaderos o falsos (truthy y falsy).

`===` (igualdad estricta) compara el valor y el tipo: 5 === "5" es false porque uno es número y el otro texto. `==` convierte los tipos antes de comparar, y por eso 5 == "5" y hasta 0 == false dan true. Use siempre === y su contrario !==, que no dan sorpresas.
Los operadores lógicos combinan condiciones: && (y) exige que se cumplan las dos, || (o) basta con una y ! (no) da la vuelta al resultado. Con 16 años no se puede ir al concierto sin un adulto, pero age >= 18 || withAdult es verdadero porque withAdult lo es.
En un if, cualquier valor cuenta como verdadero o falso. Son falsy false, 0, "" (cadena vacía), null, undefined y NaN; todo lo demás es truthy, incluso "0". Por eso if (username) sirve para saber si el usuario ha escrito algo.
|| devuelve el primer valor truthy que encuentra, así que username || "Guest" da un valor por defecto cuando el nombre está vacío. Boolean() muestra cómo se interpreta un valor.
Código · main.js
// === compares value AND type; == converts types first (avoid it).console.log('5 === 5: ', 5 === 5);console.log('5 === "5": ', 5 === "5");console.log('5 == "5": ', 5 == "5");console.log("0 == false: ", 0 == false, "| 0 === false:", 0 === false);console.log('"apple" !== "Apple":', "apple" !== "Apple");// Logical operators: && (and), || (or), ! (not)const age = 16;const withAdult = true;console.log("Can enter the concert:", age >= 18 || withAdult);const isMember = true;const total = 80;console.log("Gets the discount:", isMember && total >= 50);console.log("Is not a member:", !isMember);// Truthy and falsy: in an if, every value counts as true or false.// Falsy: false, 0, "", null, undefined and NaN. Everything else is truthy.const username = "";if (username) { console.log(`Welcome, ${username}`);} else { console.log("Please type your name");}// || gives the first truthy value: handy for defaults.console.log("Name shown:", username || "Guest");console.log("Boolean(0):", Boolean(0), "| Boolean('0'):", Boolean("0"));Salida · node main.js
5 === 5: true
5 === "5": false
5 == "5": true
0 == false: true | 0 === false: false
"apple" !== "Apple": true
Can enter the concert: true
Gets the discount: true
Is not a member: false
Please type your name
Name shown: Guest
Boolean(0): false | Boolean('0'): truePara recordar
- Use
===y!==; evite==. &&exige las dos condiciones;||, una;!niega.- Falsy:
false,0,"",null,undefined,NaN. valor || porDefectoda un valor de reserva.
Ejercicio
Añada un descuento para quien sea socio o gaste más de 100 euros, pero nunca los domingos (una variable isSunday), y pruebe varias combinaciones.