Operadores
JavaScript es un lenguaje de programación versátil que ofrece una amplia gama de operadores para realizar diversas operaciones sobre variables y valores. Estos operadores son fundamentales para cualquier desarrollo en este lenguaje, permitiendo manipular datos, realizar cálculos y controlar el flujo de ejecución. En este artículo, exploraremos los operadores más comunes en JavaScript, desde los básicos hasta los más modernos e innovadores, como el spread operator y el optional chaining.
Operadores aritméticos
Los operadores aritméticos permiten realizar operaciones matemáticas básicas. Los más utilizados son:
+Suma-Resta*Multiplicación/División%Módulo (residuo de una división)**Exponenciación
let a = 10;
let b = 3;
console.log(a + b); // 13
console.log(a % b); // 1 (residuo de la división de 10 entre 3)
console.log(a ** b); // 1000 (10 elevado a la 3)
Operadores de asignación
Los operadores de asignación permiten asignar valores a variables. El más simple es =, pero existen otros más complejos que combinan operaciones con la asignación:
=Asignación simple+=Suma y asignación-=Resta y asignación*=Multiplicación y asignación/=División y asignación%=Módulo y asignación
let x = 5;
x += 3; // x ahora es 8 (equivale a x = x + 3)
Operadores de comparación
Los operadores de comparación se utilizan para comparar valores y devuelven un valor booleano (true o false):
==Igualdad laxa (realiza conversiones de tipo automáticas, compara solo el valor)===Igualdad estricta (compara el valor y el tipo)!=Desigualdad!==Desigualdad estricta>Mayor que<Menor que>=Mayor o igual que<=Menor o igual que
console.log(5 == '5'); // true (compara solo el valor)
console.log(5 === '5'); // false (compara valor y tipo)
Operadores lógicos
Los operadores lógicos permiten combinar expresiones booleanas:
&&Y lógico (devuelvetruesi ambas expresiones son verdaderas)||O lógico (devuelvetruesi alguna de las expresiones es verdadera)!Negación lógica (invierte el valor de una expresión booleana)
let a = true;
let b = false;
console.log(a && b); // false
console.log(a || b); // true
console.log(!a); // false
Operadores bit a bit
JavaScript también soporta operadores a nivel de bits, útiles en ciertos contextos avanzados como el manejo de máscaras de bits:
&Y a nivel de bits|O a nivel de bits^XOR a nivel de bits~Negación a nivel de bits<<Desplazamiento de bits a la izquierda>>Desplazamiento de bits a la derecha
Operador ternario
El operador ternario (?:) es una forma compacta de escribir una expresión if-else. Su sintaxis es:
condición ? valor_si_verdadero : valor_si_falso;
let edad = 18;
let mensaje = (edad >= 18) ? 'Es adulto' : 'Es menor de edad';
console.log(mensaje); // Es adulto
Operador de propagación (spread operator)
Uno de los operadores más modernos y poderosos es el spread operator, representado por .... Este operador permite expandir elementos de un iterable (como un array) o las propiedades de un objeto. Es muy útil para combinar o clonar arrays y objetos.
// En arrays
let arr1 = [1, 2, 3];
let arr2 = [4, 5];
let combinado = [...arr1, ...arr2];
console.log(combinado); // [1, 2, 3, 4, 5]
// En objetos
let obj1 = { a: 1, b: 2 };
let obj2 = { c: 3, d: 4 };
let objCombinado = { ...obj1, ...obj2 };
console.log(objCombinado); // { a: 1, b: 2, c: 3, d: 4 }
Encadenamiento opcional (optional chaining)
El optional chaining (?.) es una característica introducida en las versiones más recientes de JavaScript, que permite acceder a propiedades anidadas de objetos sin necesidad de verificar explícitamente si cada nivel existe. Si alguna propiedad no existe, devuelve undefined en lugar de lanzar un error.
Ejemplo:
let persona = {
nombre: 'Juan',
direccion: {
ciudad: 'Madrid'
}
};
console.log(persona.direccion?.ciudad); // Madrid
console.log(persona.direccion?.pais); // undefined (sin error)
Este operador es especialmente útil para evitar errores cuando se trabaja con datos inciertos o estructuras anidadas complejas, como las que se obtienen de APIs.
Operador de nulish (nullish coalescing)
El nullish coalescing (??) es otro operador moderno que devuelve el operando de la derecha cuando el de la izquierda es null o undefined, pero no si es false o 0.
Ejemplo:
let nombre = null;
let saludo = nombre ?? 'Desconocido';
console.log(saludo); // Desconocido
Este operador es especialmente útil cuando quieres proporcionar valores por defecto solo cuando la variable es null o undefined.