Unidad 2
Operadores lógicos y de comparación
Operadores de asignación, aritméticos, de comparación, lógicos, de cadena y el condicional ternario.
Los operadores son los símbolos con los que se manipulan los valores: asignarlos, calcular con ellos, compararlos y combinar condiciones.
Asignación
= guarda un valor en una variable. Las formas compuestas abrevian
“opera y guarda”:
let puntos = 10;
puntos += 5; // puntos = puntos + 5 → 15
puntos -= 3; // 12
puntos *= 2; // 24
puntos /= 4; // 6
Aritméticos
| Operador | Nombre | Ejemplo | Resultado |
|---|---|---|---|
+ |
Suma | 7 + 2 |
9 |
- |
Resta | 7 - 2 |
5 |
* |
Multiplicación | 7 * 2 |
14 |
/ |
División | 7 / 2 |
3.5 |
% |
Resto (módulo) | 7 % 2 |
1 |
** |
Potencia | 7 ** 2 |
49 |
++ |
Incremento | n++ |
suma 1 a n |
-- |
Decremento | n-- |
resta 1 a n |
El resto % es más útil de lo que parece: n % 2 vale 0 si n es par, y
n % 10 da la última cifra de n.
Comparación
Comparan dos valores y devuelven un booleano:
| Operador | Significado |
|---|---|
> < >= <= |
Mayor, menor, mayor o igual, menor o igual |
== != |
Igual, distinto, con conversión de tipos |
=== !== |
Igual, distinto, estrictos: mismo valor y mismo tipo |
La diferencia entre == y === importa:
5 == '5'; // true → convierte el texto a número y compara
5 === '5'; // false → distinto tipo, sin más
0 == false; // true
0 === false; // false
null == undefined; // true
null === undefined; // false
Usa siempre === y !==. La igualdad con conversión tiene reglas difíciles
de recordar y produce errores que cuesta encontrar.
Lógicos
Combinan o niegan condiciones. Con a y b booleanos:
a |
b |
a && b (AND) |
a || b (OR) |
|---|---|---|---|
true |
true |
true |
true |
true |
false |
false |
true |
false |
true |
false |
true |
false |
false |
false |
false |
! niega: !true es false.
const edad = 20;
const socio = false;
edad >= 18 && socio; // false: las dos tienen que cumplirse
edad >= 18 || socio; // true: basta con una
!socio; // true
Evaluación en cortocircuito
&& deja de evaluar en cuanto encuentra un
false, y || en cuanto encuentra un
true. Por eso usuario && usuario.nombre
no falla cuando usuario es null: el segundo lado
ni se mira.
Cadena
El + con textos concatena. Si uno de los dos lados es texto, el otro se
convierte:
'Hola, ' + 'Ana'; // 'Hola, Ana'
'Nota: ' + 7; // 'Nota: 7'
'Total: ' + 2 + 3; // 'Total: 23' → se evalúa de izquierda a derecha
'Total: ' + (2 + 3); // 'Total: 5'
Condicional (ternario)
Resume un if / else que sólo elige entre dos valores:
condición ? valorSiCierto : valorSiFalso
const edad = 16;
const mensaje = edad >= 18 ? 'Puede votar' : 'No puede votar';
Úsalo cuando la elección cabe en una línea y se lee de un vistazo. Si hace
falta anidar ternarios, es momento de pasar a if.
Ejemplo 1: comparar
Escribe la función esMayorDeEdad(edad) que devuelva true si edad es 18 o más, y false en caso contrario. Debe devolver el resultado de la comparación directamente, sin if.
function esMayorDeEdad(edad) {
}
console.log(esMayorDeEdad(20));
console.log(esMayorDeEdad(15));
Salida de consola
Sin salida todavía.Los tests se muestran al ejecutar.
Ver solución del ejemplo 1
function esMayorDeEdad(edad) {
return edad >= 18;
}La comparación ya devuelve true o false, así
que no hace falta if (edad >= 18) return true; else return
false;: es lo mismo con más pasos.
Ejemplo 2: combinar condiciones
Escribe la función esParYPositivo(n) que devuelva true sólo si n es par y mayor que cero. Usa el operador % para saber si es par y && para exigir las dos condiciones.
function esParYPositivo(n) {
}
console.log(esParYPositivo(4));
console.log(esParYPositivo(-4));
console.log(esParYPositivo(3));
Salida de consola
Sin salida todavía.Los tests se muestran al ejecutar.
Ver solución del ejemplo 2
function esParYPositivo(n) {
return n % 2 === 0 && n > 0;
}Con && las dos condiciones tienen que cumplirse. El
test con 0 es el que descubre si has escrito
>= por descuido.
Ejemplo 3: el operador ternario
Escribe la función etiquetaNota(nota) que devuelva el texto aprobado si la nota es 5 o más y suspenso si es menor. Resuélvelo en una sola línea con el operador ternario.
function etiquetaNota(nota) {
return
}
console.log(etiquetaNota(7));
console.log(etiquetaNota(3));
Salida de consola
Sin salida todavía.Los tests se muestran al ejecutar.
Ver solución del ejemplo 3
function etiquetaNota(nota) {
return nota >= 5 ? 'aprobado' : 'suspenso';
}Ojo con el return solo en una línea: JavaScript inserta un
punto y coma detrás y la función devuelve undefined. La
expresión tiene que ir en la misma línea que el return.