Operadores LÓGICOS en JavaScript: ¿Cuáles son? Con ejemplos!
Los operadores lógicos en JavaScript son esenciales para evaluar múltiples condiciones al mismo tiempo. ¿Qué son y para qué sirven? Estos operadores permiten combinar expresiones y determinar si una condición es verdadera o falsa. A lo largo del artículo, aprenderás cuáles son, sus características y funciones, junto con ejemplos prácticos para entender su funcionamiento en tus proyectos.

Sigue las palabras fuertes si quieres un resumen de todo el artículo.
Índice
1. ¿Qué son los operadores lógicos en JavaScript?
Los operadores lógicos en el lenguaje de JavaScript son herramientas fundamentales que nos permiten realizar comparaciones y tomar decisiones basadas en valores booleanos (verdadero o falso) de una o más expresiones. Estos operadores son esenciales para controlar el flujo de ejecución de un programa y construir lógica condicional.
En otras palabras, son como reglas que utilizamos para comparar valores y tomar decisiones en nuestros programas o páginas web. Estas reglas nos permiten establecer condiciones que deben cumplirse para que se ejecute una determinada parte del código.
Ejemplos de lo que se puede hacer con estos operadores en una tienda online:
- Aplicar descuentos: Puedes ofrecer descuentos a los clientes que cumplan ciertas condiciones. Por ejemplo, si un cliente compra más de 10 productos y se registra en el boletín, puede obtener un descuento adicional.
- Mostrar productos recomendados: Puedes recomendar productos a los clientes en función de sus compras anteriores. Por ejemplo, si un cliente ha comprado un teléfono celular, puedes recomendarle una funda protectora o unos auriculares.
- Validar formularios: Puedes asegurarte de que los usuarios ingresen información válida en los formularios. Por ejemplo, puedes verificar que el correo electrónico tenga un formato correcto y que la contraseña tenga al menos 8 caracteres.
Lo PRINCIPALES OPERADORES LÓGICOS son:
- AND (
&&): Devuelvetruesolo si ambos operandos sontrue. Es decir, actúa como una conjunción lógica. - OR (
||): Devuelvetruesi al menos uno de los operandos estrue. Es decir, actúa como una disyunción lógica. - NOT (
!): Invierte el valor booleano de un operando. Si estrue, lo convierte enfalse, y viceversa.
En el siguiente punto iremos ampliando sobre cada uno de ellos!
¿Qué son los valores booleanos?
Los valores booleanos en programación son como pequeños interruptores que solo pueden tener dos estados:
- Verdadero (true): Indica que una condición se cumple o es cierta.
- Falso (false): Indica que una condición no se cumple o es falsa.
Imagina una luz: cuando está encendida, su estado es «verdadero» (está prendida); cuando está apagada, su estado es «falso» (está apagada).
¿Para qué sirven? Los valores booleanos son fundamentales para tomar decisiones en la programación. Por ejemplo:
- Condiciones: Si una condición es verdadera, se ejecuta una parte del código; si es falsa, se ejecuta otra.
- Comparaciones: Al comparar dos valores, el resultado siempre será un valor booleano (igual, diferente, mayor, menor, etc.).
- Operaciones lógicas: Los operadores lógicos (AND, OR, NOT) trabajan con valores booleanos para combinar múltiples condiciones.
En resumen: Los valores booleanos son la base de la lógica en la programación y nos permiten crear programas que se adapten a diferentes situaciones y tomen decisiones inteligentes.
1.1. ¿Cómo funcionan los operadores lógicos en una página web exactamente?
En una página web, los operadores lógicos se usan para tomar decisiones basadas en condiciones. Generalmente, se combinan con otras estructuras de control, como if, while, o for, para ejecutar diferentes bloques de código según el resultado de ciertas comparaciones o evaluaciones.
EXPLORA ESTAS ESTRUCTURAS DE CONTROL:
Por ejemplo, en una página web con formularios de registro o login, podrías querer verificar que el usuario haya completado los campos de nombre y correo antes de permitir que envíe el formulario. Aquí es donde los operadores lógicos son útiles.
Ejemplo de uso en una página web:
Supón que tienes un formulario en HTML y quieres asegurarte de que el usuario haya completado los campos de nombre y correo electrónico antes de enviar los datos.
HTML:
<form id="userForm">
<input type="text" id="name" placeholder="Nombre">
<input type="email" id="email" placeholder="Correo electrónico">
<button type="submit">Enviar</button>
</form>Lenguaje del código: HTML, XML (xml)
JavaScript:
document.getElementById("userForm").addEventListener("submit", function(event) {
// Obtener los valores de los campos
let name = document.getElementById("name").value;
let email = document.getElementById("email").value;
// Usar operadores lógicos para verificar si los campos están llenos
if (name === "" || email === "") {
// Si alguno de los campos está vacío, mostrar un mensaje y prevenir el envío
alert("Por favor, completa todos los campos.");
event.preventDefault(); // Evita que el formulario se envíe
} else {
// Si ambos campos están llenos, permite enviar el formulario
alert("Formulario enviado correctamente.");
}
});Lenguaje del código: JavaScript (javascript)
NOTA!!!! Si te animas y deseas ver el resultado de este ejemplo y de todos los que iremos proporcionando directamente desde tu PC, te invito a seguir estos pasos.
- Primero, revisa el punto 5 del siguiente artículo sobre como usar e instalar VSCode (este es el editor de código mas usado), donde encontrarás los pasos para crear la estructura necesaria para visualizar una página desde tu navegador predeterminado.
- Si entendiste correctamente este paso anterior, sabrás donde colocar el código
scriptque te acabamos de proporcionar (arriba). Ahora, puedes visualizar el resultado, para ello puedes hacer lo siguiente:- Una vez abierta y visualizada la página, abre la consola del navegador presionando la tecla F12.
- Ahora, dirígete a la pestaña que dice
Console, y desde aquí podrás ver el resultado del script que hayamos introducido anteriormente.
- No te preocupes, estos pasos son más simples de lo que parecen!!!! Entonces… cada vez que dejemos un código de ejemplo como éste, puedes seguir estos pasos y ver los resultados por ti mismo. ¡Ojalá te animes!!!!
Explicación del ejemplo anterior:
- OR (
||): En este caso, el operador OR verifica si uno de los dos campos está vacío (name === "" || email === ""). Si cualquiera de las dos expresiones es verdadera, significa que uno de los campos no se completó, y el código muestra una alerta pidiendo al usuario que llene todos los campos. - Si ambos campos están completos, el formulario se envía normalmente y se muestra el mensaje de éxito.
1.2. ¿Otros ejemplo para entender que hacen estos operadores lógicos?
Los operadores lógicos permiten combinar varias condiciones o expresiones y evaluar si se deben realizar ciertas acciones. En un sitio web, los usas para cosas como:
- Validar formularios: Asegurarte de que los campos estén llenos antes de enviar un formulario.
- Mostrar u ocultar contenido: Evaluar si un usuario está logueado para mostrar información personalizada.
- Controlar flujos de ejecución: Según el estado de la aplicación (por ejemplo, si la conexión a la red está disponible), ejecutar diferentes partes del código.
- Comportamientos condicionales: Como el comportamiento de un botón, la activación de animaciones o la carga de recursos según el estado de ciertos datos.
RESUMEN: Los operadores lógicos permiten tomar decisiones complejas en tu código, que afectan directamente cómo se comporta una página web, dependiendo de las condiciones que estés evaluando.
2. ¿Cuáles son los operadores lógicos en JavaScript?.
A continuación dejamos un resumen, y luego ampliamos sobre cada uno:
Los principales operadores lógicos son:
&&(AND): Devuelve verdadero si ambas expresiones a su lado son verdaderas. Es como decir «y».- Ejemplo:
(5 > 3) && (10 < 20)es verdadero, porque tanto 5 es mayor que 3 como 10 es menor que 20.
- Ejemplo:
||(OR): Devuelve verdadero si al menos una de las expresiones es verdadera. Es como decir «o».- Ejemplo:
(5 > 10) || (3 < 4)es verdadero, porque aunque 5 no es mayor que 10, 3 sí es menor que 4.
- Ejemplo:
!(NOT): Invierte el valor de verdad de una expresión. Es como decir «no».- Ejemplo:
!(5 > 3)es falso, porque 5 sí es mayor que 3, pero el operador NOT lo invierte.
- Ejemplo:
2.1. El operador lógico AND (&&):
El operador AND lógico (&&) en JavaScript evalúa dos o más expresiones y retorna un valor basado en su evaluación. Es útil para ejecutar código cuando todas las condiciones son verdaderas.
EJEMPLO:
let edad = 25;
let tieneLicencia = true;
if (edad >= 18 && tieneLicencia) {
console.log("Puedes conducir");
}Lenguaje del código: JavaScript (javascript)
En este ejemplo:
edad >= 18verifica si la edad es mayor o igual a 18.tieneLicenciaverifica si la persona tiene licencia.&&une ambas condiciones.- Si ambas condiciones son verdaderas, console.log de JavaScript ejecutará el código dentro del
if. En este caso sería «Puedes conducir»
2.1.1. Comportamiento del operador &&:
- Evalúa de izquierda a derecha.
- Si encuentra un valor falso en cualquier parte de la evaluación, retorna ese valor inmediatamente y no evalúa las siguientes expresiones (esto se llama «cortocircuito»).
- Si todas las expresiones son verdaderas, retorna el último valor evaluado.
2.1.2. ¿Cómo usar el operador &&? Paso a paso:
- Identifica las condiciones:
- Define las expresiones booleanas que quieres evaluar. Estas pueden ser comparaciones (mayor que, menor que, igual), resultados de funciones que devuelvan booleanos, o cualquier otra expresión que se evalúe a verdadero o falso.
- Une las condiciones con &&:
- Coloca el operador
&&entre las condiciones que quieres combinar.
- Coloca el operador
- Evalúa la expresión:
- JavaScript evaluará las condiciones de izquierda a derecha. Si encuentra una condición falsa, se detendrá y el resultado de toda la expresión será falso. Si todas las condiciones son verdaderas hasta el final, el resultado será verdadero.
- Utiliza el resultado en una estructura de control:
- Generalmente, el resultado del operador
&&se utiliza dentro de una estructura de control comoifpara tomar decisiones en función del resultado.
- Generalmente, el resultado del operador
2.1.3. ¿Cuándo se usa el operador &&?
- Validaciones: Para verificar que múltiples condiciones se cumplan antes de realizar una acción.
- Decisiones: Para tomar decisiones basadas en la combinación de varias circunstancias.
- Creación de expresiones más complejas: Se puede combinar con otros operadores lógicos para crear expresiones más sofisticadas.
2.1.4. Evaluación del operador && con valores no booleanos:
¿Qué son los valores no booleanos en JavaScript?
En JavaScript, no todos los valores son estrictamente true o false. Ciertos valores se consideran «truthy» (verdaderos) o «falsy» (falsos), dependiendo de cómo se evalúan en un contexto lógico. Esto significa que el operador && no solo evalúa valores booleanos (true o false), sino que puede evaluar cualquier tipo de dato y devolver ese valor como resultado.
- Valores «falsy»: Aquellos que se evalúan como
falseen un contexto lógico. Los principales son:false— El valor booleano falso.0— El número cero.""(una cadena vacía) — Un string sin caracteres.null— Representa la ausencia de valor.undefined— Indica que una variable no tiene valor asignadoNaN— Significa «Not a Number» (No es un número).
- Valores «truthy»: Cualquier otro valor que no sea considerado «falsy» se evalúa como
true. Ejemplos:- Cualquier valor numérico distinto de 0 (por ejemplo,
-1,1.5). - Cualquier cadena de texto no vacía (por ejemplo,
"hola"," "). - Objetos y arrays (incluso si están vacíos, como
{}o[]). - Funciones.
- El valor booleano
true.
- Cualquier valor numérico distinto de 0 (por ejemplo,
¿Cómo funciona && con valores no booleanos?
Cuando se utilizan valores no booleanos con el operador &&, éste no convierte automáticamente los valores a true o false. En lugar de eso, simplemente retorna el primer valor que se evalúa como falso o, si no encuentra ningún valor falso, retorna el último valor (sigue el comportamiento de cortocircuito).
Ejemplo 1: Primer valor «falsy».
console.log(0 && "Hola"); // 0Lenguaje del código: JavaScript (javascript)
- Aquí,
0es un valor «falsy», por lo tanto, el operador&&retorna inmediatamente0sin evaluar el segundo valor ("Hola"). Esto ocurre porque, con el operador&&, si una de las expresiones es falsa, el resultado total será falso, y no necesita seguir evaluando el resto.
Ejemplo 2: Todos los valores son «truthy».
console.log("Hola" && 123); // 123Lenguaje del código: JavaScript (javascript)
- En este caso, ambos valores son «truthy» (
"Hola"y123), por lo que el operador&&evalúa ambas expresiones y devuelve el último valor, que es123. Esto ocurre porque si todos los valores son verdaderos, el resultado total también será verdadero, y el operador devuelve el último valor evaluado.
Ejemplo 3: Combinación de varios valores.
console.log("Texto" && 42 && true && "JavaScript"); // "JavaScript"<span style="background-color: initial; color: var(--ast-global-color-8);"></span>Lenguaje del código: JavaScript (javascript)
- Aquí, todos los valores son «truthy», por lo que el operador
&&evalúa todas las expresiones y retorna el último valor evaluado, que es"JavaScript".
Ejemplo 4: Encuentra un valor «falsy»
console.log("Texto" && 0 && true && "JavaScript"); // 0Lenguaje del código: JavaScript (javascript)
- En este caso, el operador
&&encuentra0, que es «falsy», en la segunda posición. Por lo tanto, retorna inmediatamente0y deja de evaluar las expresiones restantes.
Resumen del comportamiento del operador && con valores no booleanos:
- El operador
&&evalúa las expresiones de izquierda a derecha. - Si encuentra un valor «falsy», devuelve ese valor y deja de evaluar las expresiones siguientes.
- Si todos los valores son «truthy», devuelve el último valor evaluado.
2.1.5. Ejemplo más complejo usando el operador lógico AND (&&):
let hora = 10;
let dia = "domingo";
if (hora >= 9 && hora <= 17 && dia !== "domingo") {
console.log("La tienda está abierta.");
} else {
console.log("La tienda está cerrada.");
}Lenguaje del código: JavaScript (javascript)
Análisis de este ejemplo:
Este código utiliza el operador lógico AND (&&) para verificar varias condiciones al mismo tiempo, con el propósito de determinar si una tienda está abierta o cerrada, basándose en la hora y el día. Vamos a analizarlo paso a paso:
- Variables: Primero se crean dos variables JavaScript:
hora = 10: Representa la hora actual (10 de la mañana).dia = "domingo": Representa el día actual, que es domingo.
- Condicional: Aquí tenemos una estructura
if-elseque evalúa tres condiciones con el operador AND (&&). (dentro de la estructura se usan operadores de asignación JavaScript).hora >= 9: La primera condición >= verifica si la hora es mayor o igual a 9 (la hora de apertura de la tienda).hora <= 17: La segunda condición verifica si la hora es menor o igual a 17 (la hora de cierre de la tienda).dia !== "domingo": La tercera condición verifica si no es domingo (!==significa «no es igual a»). Esto implica que la tienda está cerrada los domingos.
- El operador AND (
&&):- El operador AND evalúa que todas las condiciones deben ser verdaderas para que el bloque de código
ifse ejecute. Si alguna de las condiciones es falsa, entonces se ejecutará el bloqueelse.
- El operador AND evalúa que todas las condiciones deben ser verdaderas para que el bloque de código
- Análisis del código con los valores actuales:
hora >= 9: Esta condición estrue, porque la hora es 10, que es mayor o igual a 9.hora <= 17: Esta condición también estrue, porque la hora es 10, que es menor o igual a 17.dia !== "domingo": Esta condición esfalse, porque el día es «domingo», lo cual no cumple con la condición de que no sea domingo.
- Resultado final:
- Como la tercera condición es falsa (
dia !== "domingo"esfalse), el operador AND (&&) determina que no todas las condiciones son verdaderas. - Debido a que el operador AND necesita que todas las condiciones sean verdaderas para ejecutar el bloque
if, el código ejecuta el bloqueelse, que imprime:console.log("La tienda está cerrada.");
- Como la tercera condición es falsa (
2.1.6. Conclusión del operador lógico AND (&&):
Este tipo de lógica es muy común para verificar si ciertas variables existen antes de realizar operaciones más complejas, lo que ayuda a evitar errores y optimizar el rendimiento del código.
Además, el operador && en JavaScript no solo trabaja con valores booleanos, sino también con cualquier tipo de dato. El operador sigue una lógica simple:
- Retorna el primer valor «falsy» que encuentra o, si no hay ningún valor «falsy», retorna el último valor evaluado.
2.2. El operador lógico OR (||):
El operador lógico OR (||) en JavaScript es utilizado para evaluar dos o más expresiones y devolver el primer valor verdadero que encuentre. Si todas las expresiones son falsas, entonces devuelve el último valor evaluado.
Al igual que el operador AND (&&), el operador OR realiza una evaluación de cortocircuito, lo que significa que deja de evaluar tan pronto como encuentra un valor verdadero.
2.2.1. Comportamiento básico del operador ||:
- Evalúa las expresiones de izquierda a derecha.
- Si encuentra un valor que se evalúa como verdadero (truthy), retorna ese valor inmediatamente. (sigue el concepto de cortocircuito)
- Si todos los valores son falsos (falsy), retorna el último valor.
2.2.2. Ejemplo usando operador ||:
let nombreUsuario = "";
let nombrePorDefecto = "Invitado";
let nombreAMostrar = nombreUsuario || nombrePorDefecto;
console.log(nombreAMostrar); // "Invitado"Lenguaje del código: JavaScript (javascript)
Explicación del ejemplo:
- Variables:
nombreUsuario = "": Esta variable representa el nombre ingresado por el usuario. En este caso, está vacía (un valor «falsy»).nombrePorDefecto = "Invitado": Es un valor alternativo que queremos mostrar sinombreUsuarioestá vacío.
- Operador OR (
||):nombreAMostrar = nombreUsuario || nombrePorDefecto: Aquí usamos el operador OR para evaluar ambas variables.- El operador OR (
||) evalúa las expresiones de izquierda a derecha y devuelve el primer valor que sea verdadero (o «truthy»).
- Evaluación del operador OR:
- Primera expresión (
nombreUsuario):""es un valor «falsy» en JavaScript, lo que significa que se evalúa comofalse. Entonces, el operador OR continúa evaluando la siguiente expresión. - Segunda expresión (
nombrePorDefecto):"Invitado"es un valor «truthy» porque es una cadena no vacía, lo que significa que se evalúa comotrue. - Como
"Invitado"es el primer valor «truthy» que encuentra,nombreAMostrarse asigna con este valor.
- Primera expresión (
- Resultado:
- El valor
"Invitado"es impreso en la consola porque es el primer valor «truthy» que encontró el operador OR. SinombreUsuariohubiera sido un valor válido (por ejemplo,"Manuel"), el operador OR habría seleccionado ese valor.
- El valor
2.2.3. ¿Cómo usar el operador ||? Paso por paso:
- Identifica las condiciones:
- Define las expresiones booleanas que quieres evaluar. Pueden ser comparaciones, resultados de funciones que devuelvan booleanos, o cualquier otra expresión que se evalúe a verdadero o falso.
- Une las condiciones con
||:- Coloca el operador
||entre las condiciones que quieres combinar.
- Coloca el operador
- Evalúa la expresión:
- JavaScript evaluará las condiciones de izquierda a derecha. Si encuentra una condición verdadera, se detendrá y el resultado de toda la expresión será verdadero. Si todas las condiciones son falsas hasta el final, el resultado será falso.
- Utiliza el resultado en una estructura de control:
- Generalmente, el resultado del operador
||se utiliza dentro de una estructura de control comoifpara tomar decisiones en función del resultado.
- Generalmente, el resultado del operador
2.2.4. El operador || también trabaja con valores no booleanos:
Al igual que en el caso del operador &&, el operador || trabaja con cualquier tipo de dato, no solo booleanos. Recordemos que en JavaScript, algunos valores se consideran «falsy» y otros «truthy» (en el punto 2.1.4. explicamos estos conceptos).
Al trabajar con valores no booleanos seguirá su lógica de encontrar el primer valor truthy o devolver el último valor si todos son falsos.
2.2.5. Uso común del operador || en JavaScript:
El operador || es muy útil para establecer valores predeterminados o manejar casos en los que una variable podría ser null o undefined. Es común verlo en lógica de inicialización y asignación de variables.
Ejemplo 1: Valores predeterminados:
let nombre = usuarioNombre || "Invitado";
console.log(nombre); // "Invitado" si `usuarioNombre` es falsyLenguaje del código: JavaScript (javascript)
- Si la variable
usuarioNombrees «falsy» (por ejemplo, si esnull,undefined,"", etc.), el operador||asigna el valor"Invitado". SiusuarioNombretiene un valor «truthy», ese valor se asignará en su lugar.
Ejemplo 2: Verificar múltiples condiciones:
let resultado = obtenerValor() || obtenerValorAlternativo();
console.log(resultado);Lenguaje del código: JavaScript (javascript)
- En este caso, si
obtenerValor()devuelve un valor «falsy», se ejecutará la funciónobtenerValorAlternativo()para proporcionar un valor alternativo.
2.2.6. Conclusión sobre el operador || en JavaScript::
- El operador
||evalúa expresiones de izquierda a derecha. - Retorna el primer valor «truthy» que encuentra y deja de evaluar las demás expresiones.
- Si todas las expresiones son «falsy», retorna el último valor.
- Es muy útil para establecer valores predeterminados y evitar errores al manejar valores como
nulloundefined.
2.3. El operador lógico NOT (!):
El operador lógico NOT (!) en JavaScript es un operador unario que se utiliza para invertir el valor de una expresión o variable. Es decir, convierte un valor verdadero en falso, y un valor falso en verdadero.
Sintaxis:
!expresión
2.3.1. ¿Cómo usar el operador lógico NOT (!)? Paso por paso:
- Identifica la expresión:
- Define la condición que quieres invertir. Puede ser una simple comparación, una variable booleana o una expresión más compleja.
- Coloca el operador NOT antes de la expresión:
- El signo de exclamación (
!) debe ir inmediatamente antes de la expresión que quieres negar.
- El signo de exclamación (
- Evalúa la expresión:
- JavaScript evaluará la expresión original y luego invertirá su resultado.
2.3.2. ¿Cómo funciona el operador !?:
!toma una expresión y la convierte en su valor booleano contrario.- Si la expresión se evalúa como
true(verdadero),!la convierte enfalse. - Si la expresión se evalúa como
false(falso),!la convierte entrue.
2.3.3. Ejemplos simples con valores booleanos:
Ejemplo 1: Valor verdadero:
let a = true;
console.log(!a); // falseLenguaje del código: JavaScript (javascript)
- Aquí,
aestrue, pero el operador!invierte ese valor y devuelvefalse.
Ejemplo 2: Valor falso:
let b = false;
console.log(!b); // trueLenguaje del código: JavaScript (javascript)
- En este caso,
besfalse, pero el operador!invierte el valor y devuelvetrue.
2.3.4. Uso del operador ! con valores no booleanos:
El operador ! también puede trabajar con cualquier valor, no solo con valores booleanos. Sin embargo, en estos casos, primero convierte el valor a su equivalente booleano (truthy o falsy), y luego invierte ese valor (recuerda que los valores truthy y falsy los explicamos en el punto 2.1.4.).
Ejemplo 1: Valor «falsy»:
let valor = 0;
console.log(!valor); // trueLenguaje del código: JavaScript (javascript)
- Aquí,
0es un valor «falsy», por lo que!0devuelvetrue(el inverso defalse).
Ejemplo 2: Valor «truthy»:
let valor = "Hola";
console.log(!valor); // falseLenguaje del código: JavaScript (javascript)
- En este caso,
"Hola"es un valor «truthy», por lo que!lo convierte enfalse.
2.3.5. Doble negación (!!):
Una práctica común en JavaScript es usar el operador ! dos veces seguidas (!!). Esto sirve para convertir cualquier valor en su equivalente booleano. El primer ! invierte el valor, y el segundo ! lo vuelve a invertir, resultando en su valor booleano original.
Ejemplo:
let valor = "Texto";
console.log(!!valor); // trueLenguaje del código: JavaScript (javascript)
"Texto"es un valor «truthy». Usar!!valorprimero convierte"Texto"afalse(por el primer!) y luego atrue(por el segundo!). Es una forma rápida de convertir un valor atrueofalsesin importar su tipo original.
Otro ejemplo:
let valor = 0;
console.log(!!valor); // falseLenguaje del código: JavaScript (javascript)
- Aquí,
0es un valor «falsy», y la doble negación devuelvefalse.
2.3.6. Uso común del operador !:
El operador ! se utiliza principalmente para verificar si una condición es falsa o para asegurarse de que algo no está ocurriendo. Es muy común en condiciones if, ciclos, y para manejar errores o validaciones.
Ejemplo práctico:
let usuarioAutenticado = false;
if (!usuarioAutenticado) {
console.log("Acceso denegado");
}Lenguaje del código: JavaScript (javascript)
- En este ejemplo, la condición
!usuarioAutenticadoverifica si el usuario no está autenticado. SiusuarioAutenticadoesfalse, el operador!lo convierte entrue, ejecutando el bloque de código.
2.3.7. Resumen del operador !:
!invierte el valor booleano de una expresión o variable.- Convierte un valor «truthy» en
falsey un valor «falsy» entrue. !!se usa para convertir cualquier valor en su correspondiente booleano.
Ejemplos de resumen:
console.log(!true); // false
console.log(!false); // true
console.log(!0); // true (porque 0 es falsy)
console.log(!"Hola"); // false (porque "Hola" es truthy)
console.log(!!123); // true (convierto 123 en su valor booleano equivalente)
console.log(!!null); // false (porque null es falsy)Lenguaje del código: JavaScript (javascript)
En resumen, el operador ! es una herramienta fundamental para controlar el flujo de un programa, permitiendo manejar condiciones opuestas de manera sencilla.
3. Uso combinado y precedencia de los operadores lógicos en JavaScript.
El uso combinado de los operadores lógicos en JavaScript (AND &&, OR ||, y NOT !) permite construir expresiones más complejas y tomar decisiones condicionales con mayor precisión. Al combinarlos, puedes evaluar múltiples condiciones, aplicar lógica inversa, y crear estructuras de control más avanzadas.
Antes de ver su uso combinado, es importante conocer que es la precedencia de estos operadores lógicos en JavaScript
3.1. Precedencia de operadores lógicos:
En JavaScript, los operadores lógicos tienen una jerarquía de precedencia. Esto determina el orden en que se evalúan cuando hay múltiples operadores en una misma expresión.
- Operador lógico NOT (
!):- Tiene la mayor precedencia entre los operadores lógicos. Esto significa que siempre se evalúa primero cuando está presente en una expresión.
- Operador lógico AND (
&&):- Tiene la siguiente precedencia después de
!. Cuando aparece junto con el operador OR (||), AND se evalúa antes.
- Tiene la siguiente precedencia después de
- Operador lógico OR (
||):- Tiene la precedencia más baja entre los operadores lógicos. Esto significa que si no usas paréntesis para alterar el orden, se evaluará después de
&&y!.
- Tiene la precedencia más baja entre los operadores lógicos. Esto significa que si no usas paréntesis para alterar el orden, se evaluará después de
Orden de precedencia:
!(NOT)&&(AND)||(OR)
3.1.1. Uso de paréntesis para afectar el orden de precedencia:
- Los paréntesis se utilizan para alterar el orden de precedencia y garantizar que ciertas partes de una expresión se evalúen primero, sin importar la precedencia natural de los operadores.
- Sin paréntesis, los operadores se evalúan según su precedencia natural. Con paréntesis, puedes controlar qué partes de la expresión se evalúan primero, haciendo el código más claro y preciso.
EJEMPLO 1: Sin paréntesis:
Veamos un ejemplo en el que mezclamos los operadores lógicos y cómo la precedencia influye en el resultado:
let a = true;
let b = false;
let c = true;
let resultado = a || b && c;
console.log(resultado); // trueLenguaje del código: JavaScript (javascript)
Evaluación paso a paso:
- Precedencia del operador AND (
&&):- Primero, se evalúa
b && c. En este caso,besfalseycestrue.El resultado deb && cesfalse(porque en&&ambas partes deben ser verdaderas).
- Después de evaluar el
&&, la expresión queda como:a || false;
- Primero, se evalúa
- Operador OR (
||):- Luego, se evalúa
a || false. Aquí,aestrue, por lo que el operador OR retorna el primer valor «truthy», que estrue.
- Resultado final:
true;
- Luego, se evalúa
EJEMPLO 2: Con paréntesis:
Ahora, usando paréntesis para alterar la precedencia de los operadores:
let a = true;
let b = false;
let c = true;
let resultado = (a || b) && c;
console.log(resultado); // trueLenguaje del código: JavaScript (javascript)
Evaluación paso a paso:
- Paréntesis:
- Debido a los paréntesis, la expresión
a || bse evalúa primero.aestrueybesfalse, por lo quea || bse evalúa comotrue(porque OR devuelvetruesi al menos uno de los valores es verdadero).
- La expresión se convierte en:
true && c;
- Debido a los paréntesis, la expresión
- Operador AND (
&&):- Luego, se evalúa
true && c. Dado quectambién estrue, el resultado detrue && trueestrue.
- Resultado final:
true;
- Luego, se evalúa
EJEMPLO 3: Uso del operador NOT (!)
El operador NOT tiene la mayor precedencia. Veamos cómo afecta su comportamiento:
let a = true;
let b = false;
let resultado = !a || b;
console.log(resultado); // falseLenguaje del código: JavaScript (javascript)
Evaluación paso a paso:
- Operador NOT (
!):- Se evalúa primero
!a. Dado queaestrue,!ase convierte enfalse.
- La expresión queda:
false || b;
- Se evalúa primero
- Operador OR (
||):- Luego, se evalúa
false || b. Comobesfalse, el resultado final esfalse.
- Resultado final:
false;
- Luego, se evalúa
3.1.2. CONCLUSIÓN: ¿Cuándo usar paréntesis?
Siempre que tengas operadores mezclados (!, &&, ||), es importante que entiendas la precedencia de estos operadores para evitar errores lógicos. Usar paréntesis cuando la lógica es compleja o cuando quieres asegurar un orden específico de evaluación es una buena práctica, ya que hace el código más claro y predecible.
REGLA GENERAL: Si tienes cualquier duda sobre cómo se va a evaluar una expresión compleja, usa paréntesis para asegurarte de que el código haga exactamente lo que quieres.
3.2. Uso combinado de &&, ||, y !:
A continuación te muestro algunos ejemplos prácticos de cómo se pueden combinar estos operadores para resolver problemas condicionales.
3.2.1. Ejemplo 1: Evaluar múltiples condiciones con && y ||
El código que presentas evalúa si una persona puede conducir dependiendo de su edad y si tiene una licencia, combinando operadores lógicos AND (&&) y OR (||).
A continuación, dejamos un análisis detallado, explicando cómo JavaScript evalúa estas condiciones.
let edad = 25;
let tieneLicencia = true;
if (edad >= 18 && tieneLicencia || edad === 16) {
console.log("Puedes conducir.");
} else {
console.log("No puedes conducir.");
}Lenguaje del código: JavaScript (javascript)
Explicación del ejemplo paso a paso:
- Variables iniciales:
let edad = 25;: La variableedadtiene el valor25, que es mayor de 18.let tieneLicencia = true;: La variabletieneLicenciaestrue, lo que significa que la persona tiene licencia para conducir.
- Evaluación de la condición
if: La condición delifutiliza una combinación de operadores AND (&&) y OR (||):if (edad >= 18 && tieneLicencia || edad === 16).Para evaluar esta expresión, debemos considerar el orden de precedencia de los operadores lógicos en JavaScript:- El AND (
&&) tiene mayor precedencia que el OR (||), por lo que JavaScript evalúa primero la parte que contiene&&. - Una vez evaluada esa parte, se realiza la comparación con el operador
||.
- El AND (
- Evaluación con cortocircuito y precedencia: Vamos a dividir la evaluación en pasos para ver cómo JavaScript procesa la expresión.
- Primera comparación (
edad >= 18 && tieneLicencia):edad >= 18evalúa siedades mayor o igual a 18. En este caso,edades25, por lo que esta expresión estrue.- Luego,
tieneLicenciaestrue, ya que la persona tiene licencia. - Como ambas condiciones son
true, la expresión completaedad >= 18 && tieneLicenciase evalúa comotrue.
- Segunda comparación (
edad === 16):- Después de evaluar
edad >= 18 && tieneLicencia, JavaScript pasa a evaluaredad === 16. - En este caso,
edades25, por lo queedad === 16se evalúa comofalse.
- Después de evaluar
- Primera comparación (
- Uso del operador
||:- Ahora JavaScript evalúa la expresión completa con el operador OR (
||): - El resultado de
edad >= 18 && tieneLicenciaestruey el resultado deedad === 16esfalse. - Como el operador OR (
||) devuelvetruesi al menos una de las expresiones estrue, la condición final estrue.
- Ahora JavaScript evalúa la expresión completa con el operador OR (
- Resultado de la condición:
- Dado que la condición
ifestrue, el programa ejecuta el siguiente código: console.log("Puedes conducir.");
- Dado que la condición
Conclusión del ejemplo:
Este código evalúa si una persona puede conducir bajo dos posibles escenarios:
- La persona tiene 18 años o más y tiene licencia para conducir.
- O, la persona tiene exactamente 16 años.
En este caso, como edad es 25 y la persona tiene licencia, cumple la primera condición, por lo que la salida es "Puedes conducir.".
3.2.2. Ejemplo 2: Forzar precedencia con paréntesis
let a = true;
let b = false;
let c = true;
if (a || (b && !c)) {
console.log("Se cumple la condición.");
} else {
console.log("No se cumple la condición.");
}Lenguaje del código: JavaScript (javascript)
Explicación del ejemplo paso a paso:
- Variables iniciales:
let a = true;: La variableatiene el valortrue.let b = false;: La variablebtiene el valorfalse.let c = true;: La variablectiene el valortrue.
- Evaluación de la condición
if: La condición que se evalúa es:if (a || (b && !c)). Para evaluar esta expresión, es importante tener en cuenta el orden de precedencia de los operadores lógicos:- NOT (
!) tiene la mayor precedencia, por lo que se evalúa primero. - AND (
&&) tiene mayor precedencia que OR (||), por lo que después de!se evalúab && !c. - Finalmente, se evalúa el OR (
||).
- NOT (
- Evaluación con precedencia: Vamos a dividir la evaluación en pasos basándonos en la precedencia de los operadores lógicos.
- Primera evaluación (
!c):- El operador NOT (
!) se aplica primero a la variablec, que tiene el valortrue. !cinvierte el valor dec, por lo que!cse convierte enfalse.- Ahora tenemos la expresión reducida a:javascriptCopiar código
if (a || (b && false))
- El operador NOT (
- Segunda evaluación (
b && !c):- A continuación, se evalúa la expresión
b && false. - Dado que el valor de
besfalse, y el operador AND (&&) requiere que ambas condiciones sean verdaderas para que el resultado seatrue, la expresión completab && falseesfalse. - La expresión se reduce ahora a:javascriptCopiar código
if (a || false)
- A continuación, se evalúa la expresión
- Tercera evaluación (
a || false):- Finalmente, se evalúa la expresión
a || false. - Como
atiene el valortrue, y el operador OR (||) devuelvetruesi al menos una de las condiciones es verdadera, el resultado final estrue.
- Finalmente, se evalúa la expresión
- Primera evaluación (
- Resultado de la condición:
- Dado que la condición del
ifestrue, el bloque de código dentro delifse ejecuta:javascriptCopiar códigoconsole.log("Se cumple la condición.");
- Dado que la condición del
Resumen del análisis:
Este código verifica una condición compuesta usando OR y AND, junto con la inversión de valores con NOT. Dado que a es true, la condición completa también resulta true, sin necesidad de evaluar más allá de la primera parte del OR (||), lo que hace que se imprima "Se cumple la condición.".
3.2.3. Ejemplos de uso práctico en código real:
El uso combinado de operadores lógicos es útil en situaciones más complejas, como:
Validaciones de formularios:
let nombre = "Juan";
let email = "";
let esMayorDeEdad = true;
if (nombre && email && esMayorDeEdad) {
console.log("Formulario válido.");
} else {
console.log("Formulario inválido.");
}Lenguaje del código: JavaScript (javascript)
Explicación paso a paso:
- Variables iniciales:
let nombre = "Juan";: El valor de la variablenombrees la cadena"Juan", lo que se considera un valor «truthy» en JavaScript (ya que cualquier cadena no vacía es «truthy»).let email = "";: La variableemailes una cadena vacía"", lo que es un valor «falsy» en JavaScript (las cadenas vacías son consideradas comofalse).let esMayorDeEdad = true;: El valor deesMayorDeEdadestrue, por lo tanto, es un valor «truthy».
- Evaluación de la condición
if: El bloqueifcontiene una combinación de tres expresiones con el operador lógico AND (&&):if (nombre && email && esMayorDeEdad)
- Precedencia y evaluación de los operadores lógicos: El operador lógico AND (
&&) tiene una precedencia de izquierda a derecha y sigue una estrategia de cortocircuito. Esto significa que si una de las condiciones es «falsy», JavaScript dejará de evaluar el resto de las expresiones, porque el resultado completo de la operación ya seráfalse.- Primera comparación (
nombre && email):- La primera expresión que se evalúa es
nombre && email. nombrees"Juan", que es «truthy».emailes"", que es «falsy».- Debido a que
emailes «falsy», la evaluación se detiene aquí (no se evalúaesMayorDeEdad), y la expresión completanombre && email && esMayorDeEdadresulta serfalse.
- La primera expresión que se evalúa es
- Primera comparación (
- Resultado de la condición:
- Dado que la expresión completa es
false(por la cadena vacía enemail), el bloqueelsese ejecuta. - El programa ejecuta el siguiente código:javascriptCopiar código
console.log("Formulario inválido.");
- Dado que la expresión completa es
RESUMEN:
Este código valida el formulario comprobando si todas las condiciones (nombre, email y esMayorDeEdad) son verdaderas. Como email es una cadena vacía (valor «falsy»), la validación falla, y se imprime "Formulario inválido." en la consola.
3.3. Consejos al combinar operadores lógicos:
- Cortocircuito: Tanto
&&como||pueden dejar de evaluar expresiones cuando ya han encontrado un resultado que determina el valor final. Esto puede mejorar el rendimiento en ciertos casos y también evitar errores, como tratar de acceder a una propiedad denulloundefined. - Precedencia: Recuerda que
!se evalúa primero, seguido de&&y luego||. Si no estás seguro del orden en que se evaluarán las expresiones, es mejor usar paréntesis para hacerlo explícito.
4. Operadores lógicos JavaScript en asignaciones y expresiones.
Los operadores lógicos en JavaScript no solo se usan en condiciones simples dentro de estructuras como if-else, sino que también tienen un uso poderoso en asignaciones condicionales de valores y evaluación de funciones, lo que te permite escribir código más conciso, legible y eficiente.
A continuación, ampliamos este concepto y su aplicación práctica.
4.1. Asignaciones condicionales:
Los operadores lógicos, como && (AND) y || (OR), se pueden usar directamente al asignar valores a variables, para decidir qué valor asignar dependiendo de ciertas condiciones. En lugar de usar estructuras if-else, se puede utilizar estos operadores para realizar la asignación de manera más concisa.
4.1.1. Ejemplo de asignación con OR (||):
let usuario = null;
let nombre = usuario || "Invitado";
console.log(nombre); // "Invitado"Lenguaje del código: JavaScript (javascript)
En este caso, si la variable usuario es null o cualquier otro valor «falsy», se le asigna el valor "Invitado". El operador lógico OR (||) evalúa el valor de usuario. Como usuario es null (falsy), se asigna «Invitado» a la variable nombre. Se imprime «Invitado» en la conso
4.1.2. Ejemplo de asignación con AND (&&):
let isAdmin = true;
let access = isAdmin && "Acceso concedido";
console.log(access); // "Acceso concedido"Lenguaje del código: JavaScript (javascript)
Aquí, si isAdmin es true, se asigna el valor "Acceso concedido" a la variable access. Si isAdmin fuera false, la expresión completa devolvería false, y no se asignaría el texto.
4.2. Expresiones:
Una expresión es cualquier fragmento de código que devuelve un valor, lo cual incluye tanto operaciones matemáticas como operaciones lógicas, o incluso llamadas a funciones. En este contexto, los operadores lógicos pueden evaluarse en el medio de una expresión para decidir el flujo o resultado de esa expresión.
4.2.1. Ejemplo en una expresión:
let edad = 20;
let mensaje = (edad >= 18) && "Eres mayor de edad";
console.log(mensaje); // "Eres mayor de edad"Lenguaje del código: JavaScript (javascript)
Aquí, la expresión edad >= 18 es true, por lo que se evalúa el lado derecho del operador AND (&&) y el valor "Eres mayor de edad" se asigna a la variable mensaje.
Si la expresión fuera false, entonces && devolvería false, y la asignación no ocurriría, por ejemplo:
let edad = 16;
let mensaje = (edad >= 18) && "Eres mayor de edad";
console.log(mensaje); // falseLenguaje del código: JavaScript (javascript)
4.3. Ventajas del uso en asignaciones y expresiones:
- Concisión: Se evita la necesidad de escribir estructuras
if-elseexplícitas. - Legibilidad: El código es más fácil de leer, ya que se combina la lógica con la asignación.
- Eficiencia: Los operadores lógicos implementan cortocircuito. Si se encuentra una condición que ya determina el resultado, JavaScript no evalúa las demás expresiones.
5. Uso de operadores lógicos con funciones en Javascript.
El uso de operadores lógicos dentro de funciones en JS permite simplificar la lógica y mejorar el control de flujo, lo que conduce a un código más limpio y eficiente. Los operadores lógicos pueden reemplazar estructuras como if-else en muchos casos, permitiendo que las funciones sean más compactas y fáciles de leer.
5.1. Simplificación de funciones con operadores lógicos
Al usar operadores lógicos dentro de funciones, puedes evitar el uso de bloques condicionales complejos y mantener las evaluaciones más simples y claras.
Esto también puede hacer que tu código sea más eficiente, ya que los operadores lógicos pueden «cortar» la evaluación cuando se cumplen ciertas condiciones (corto circuito).
5.1.1. Operador OR (||) en funciones
El operador OR (||) se utiliza para devolver el primer valor verdadero (truthy) encontrado en una serie de condiciones. Esto es útil para definir valores por defecto dentro de una función o para evitar la ejecución de lógica adicional si ya se tiene un valor válido.
function obtenerNombreUsuario(nombreUsuario) {
return nombreUsuario || "Invitado";
}
console.log(obtenerNombreUsuario("Manuel")); // "Manuel"
console.log(obtenerNombreUsuario("")); // "Invitado"Lenguaje del código: JavaScript (javascript)
- Explicación: Si
nombreUsuariotiene un valor válido (truthy), la función lo devolverá. SinombreUsuarioes un valor falsy (como"",null,undefined), retornará"Invitado".
5.1.2. Operador AND (&&) en funciones
El operador AND (&&) se usa para evaluar una segunda expresión solo si la primera es verdadera (truthy). Esto te permite ejecutar partes de una función condicionalmente, de forma concisa.
function mostrarMensajeBienvenida(estaLogueado) {
estaLogueado && console.log("Bienvenido al sistema!");
}
mostrarMensajeBienvenida(true); // "Bienvenido al sistema!"
mostrarMensajeBienvenida(false); // (No muestra nada)Lenguaje del código: JavaScript (javascript)
- Explicación: El mensaje de bienvenida se muestra solo si
estaLogueadoestrue. Si esfalse, la función no ejecutaconsole.log.
5.2. Control de flujo en funciones con operadores lógicos
Los operadores lógicos pueden mejorar el control de flujo en una función al permitir que se tomen decisiones sobre qué se ejecuta y cuándo de forma más directa que con condicionales tradicionales.
5.2.1. Usar || para valores predeterminados en funciones.
Si una función espera ciertos parámetros que podrían no ser proporcionados, puedes usar el operador OR (||) para asignar valores predeterminados si los parámetros son undefined o falsy.
function crearPerfil(nombre, edad) {
nombre = nombre || "Anónimo";
edad = edad || 18;
return `Nombre: ${nombre}, Edad: ${edad}`;
}
console.log(crearPerfil("Manuel", 30)); // "Nombre: Manuel, Edad: 30"
console.log(crearPerfil()); // "Nombre: Anónimo, Edad: 18"Lenguaje del código: JavaScript (javascript)
- Explicación: Si
nombreoedadno se proporcionan o son valores falsy (comoundefined), se asignan valores predeterminados"Anónimo"y18, respectivamente.
5.2.2. Uso del operador AND (&&) para ejecutar acciones condicionalmente
El operador AND (&&) es útil cuando necesitas ejecutar una acción solo si se cumple una condición específica.
function enviarNotificacion(usuario) {
usuario.estaLogueado && console.log(`Notificación enviada a ${usuario.nombre}`);
}
let usuario = { nombre: "Manuel", estaLogueado: true };
enviarNotificacion(usuario); // "Notificación enviada a Manuel"
usuario.estaLogueado = false;
enviarNotificacion(usuario); // No se ejecutaLenguaje del código: JavaScript (javascript)
- Explicación: La notificación solo se envía si
usuario.estaLogueadoestrue. Si no lo es, la función simplemente no ejecuta elconsole.log.
5.2.3. Uso combinado de && y || en funciones
En funciones más avanzadas, puedes combinar && y || para crear lógica más eficiente.
function obtenerRolUsuario(rol) {
return rol === "admin" && "Administrador" || "Usuario Regular";
}
console.log(obtenerRolUsuario("admin")); // "Administrador"
console.log(obtenerRolUsuario("cliente")); // "Usuario Regular"Lenguaje del código: JavaScript (javascript)
- Explicación: Si
roles"admin", se devuelve"Administrador". Si no, se devuelve"Usuario Regular". El uso combinado de&&y||permite una lógica más compacta que unif-elsetradicional.
5.3. Evaluación condicional de funciones
Además de usarse para asignaciones y control de flujo, los operadores lógicos también pueden hacer que las funciones se evalúen solo bajo ciertas condiciones. Esto permite una ejecución eficiente, especialmente en casos en los que no es necesario evaluar funciones si no se cumplen las condiciones iniciales.
5.3.1. Llamar a funciones condicionalmente con AND (&&)
Puedes usar el operador AND (&&) para ejecutar una función solo si una condición es verdadera, evitando así llamadas innecesarias.
function saludar(nombre) {
return `¡Hola, ${nombre}!`;
}
let usuario = { nombre: "Manuel", estaLogueado: true };
// Solo se ejecuta saludar si usuario.estaLogueado es true
usuario.estaLogueado && console.log(saludar(usuario.nombre));
// "¡Hola, ManuelLenguaje del código: JavaScript (javascript)
- Explicación: La función
saludarsolo se ejecuta siusuario.estaLogueadoestrue. Si esfalse, la función no se llama, lo que evita operaciones innecesarias.
5.3.2. Valores por defecto en funciones con OR (||)
Si tienes una función que depende de parámetros, puedes usar el operador OR (||) para proporcionar valores por defecto cuando los argumentos no se pasen o sean undefined.
function obtenerDescuento(precio, descuento) {
descuento = descuento || 0.10; // 10% de descuento por defecto
return precio - (precio * descuento);
}
console.log(obtenerDescuento(100)); // 90
console.log(obtenerDescuento(100, 0.20)); // 80Lenguaje del código: JavaScript (javascript)
- Explicación: Si
descuentono se pasa como argumento, se establece un valor por defecto de0.10(10%).
5.4. Optimización de flujo con operadores lógicos en funciones
El uso de operadores lógicos no solo simplifica el código, sino que también optimiza el flujo de las funciones. En lugar de tener múltiples bloques condicionales, puedes reducir la cantidad de código innecesario utilizando operadores lógicos para manejar condiciones y valores de manera eficiente.
5.4.1. Manejo de errores o valores no válidos
Puedes usar el operador OR (||) para devolver un valor seguro o ejecutar una función de respaldo si algo sale mal, mejorando el control de errores.
function obtenerPrecio(producto) {
return producto.precio || "Precio no disponible";
}
let producto1 = { nombre: "Laptop", precio: 1000 };
let producto2 = { nombre: "Monitor" };
console.log(obtenerPrecio(producto1)); // 1000
console.log(obtenerPrecio(producto2)); // "Precio no disponible"Lenguaje del código: JavaScript (javascript)
- Explicación: Si
producto.preciono está definido, se devuelve el mensaje"Precio no disponible"en lugar de un valor indefinido.
5.5. Conclusión sobre usar operadores lógicos dentro de funciones:
Usar operadores lógicos dentro de funciones en JavaScript te permite escribir código más compacto y eficiente.
Puedes simplificar la lógica de control, manejar asignaciones condicionales y evaluar funciones solo cuando sea necesario. Esto resulta en funciones más legibles y fáciles de mantener, que reducen el número de bloques condicionales y mejoran el control de flujo general de la aplicación.
6. Operadores lógicos con Arrays y Objetos en JavaScript
Los operadores lógicos (&&, ||, !) no solo son útiles para manejar valores simples como booleanos, números y cadenas, sino que también funcionan muy bien con arrays y objetos, permitiendo verificar condiciones y trabajar con estructuras de datos más complejas.
Al comprender cómo interactúan con estas estructuras, puedes escribir código más eficiente y limpio para manejar datos, realizar verificaciones de condiciones y optimizar el flujo de tu programa.
EXPLORA ESTOS CONCEPTOS
6.1. Operador AND (&&) con Arrays y Objetos
El operador AND (&&) devuelve el primer valor falsy que encuentre o, si no lo encuentra, devuelve el último valor evaluado. Esto es útil para verificar si existe un objeto o un array antes de acceder a sus propiedades o elementos.
6.1.1. Verificar la existencia de propiedades de objetos.
El operador AND se usa comúnmente para verificar si un objeto existe antes de acceder a una propiedad dentro de él, lo que previene errores como intentar acceder a una propiedad de undefined o null.
let usuario = {
nombre: "Manuel",
direccion: {
ciudad: "Buenos Aires",
}
};
let ciudad = usuario && usuario.direccion && usuario.direccion.ciudad;
console.log(ciudad); // "Buenos Aires"Lenguaje del código: JavaScript (javascript)
- Explicación: En este caso,
usuario && usuario.direccion && usuario.direccion.ciudadasegura que tanto el objetousuariocomo su propiedaddireccionexisten antes de intentar acceder a la propiedadciudad. Si alguna de estas no existiera, la expresión devolveríaundefineden lugar de lanzar un error.
6.1.2. Verificar si un array tiene elementos
Puedes usar el operador AND para verificar si un array tiene elementos antes de realizar una operación sobre ellos, como acceder a su longitud o iterar sobre ellos.
let listaCompras = ["pan", "leche", "huevos"];
listaCompras.length && console.log("La lista no está vacía.");
// "La lista no está vacía."
listaCompras = [];
listaCompras.length && console.log("La lista no está vacía.");
// (No se imprime nada)Lenguaje del código: JavaScript (javascript)
- Explicación: La expresión
listaCompras.length && ...verifica si la longitud del array es mayor a 0 (lo que significa que no está vacío). SilistaComprasestá vacío, no se ejecuta la segunda parte de la expresión.
6.2. Operador OR (||) con Arrays y Objetos
El operador OR (||) devuelve el primer valor truthy que encuentre. Esto es útil para asignar valores predeterminados a objetos o arrays si están vacíos o son null/undefined.
6.2.1. Asignar valores predeterminados a objetos
Puedes usar el operador OR para asignar un valor predeterminado si un objeto es undefined o null, evitando así la necesidad de hacer una verificación explícita con if.
let configuracion = null;
let configuracionPredeterminada = { tema: "claro", idioma: "español" };
let opciones = configuracion || configuracionPredeterminada;
console.log(opciones); // { tema: "claro", idioma: "español" }Lenguaje del código: JavaScript (javascript)
- Explicación: Si
configuracionesnull, se utilizaconfiguracionPredeterminada. De lo contrario, se usaconfiguracionsi contiene algún valor. Esto asegura que siempre haya un objeto válido con el que trabajar.
6.2.2. Asignar valores predeterminados a arrays
De forma similar, puedes usar OR para asignar un array vacío si el array original es null o undefined.
let productos = null;
let listaProductos = productos || [];
console.log(listaProductos); // []Lenguaje del código: JavaScript (javascript)
- Explicación: Si
productosesnulloundefined,listaProductosse asigna como un array vacío ([]). Esto previene errores al intentar trabajar conproductos.
6.3. Operador NOT (!) con Arrays y Objetos
El operador NOT (!) invierte el valor de verdad de un valor. Con arrays y objetos, puede ser útil para verificar si una estructura de datos está vacía o no.
6.3.1. Verificar si un array está vacío
Puedes usar el operador NOT para verificar si un array no tiene elementos de manera más concisa.
let tareas = [];
if (!tareas.length) {
console.log("No hay tareas pendientes.");
}Lenguaje del código: JavaScript (javascript)
- Explicación: El operador
!se usa aquí para verificar sitareas.lengthes 0, lo que indica que el array está vacío. Si es así, imprime «No hay tareas pendientes».
6.3.2. Verificar si un objeto está definido
El operador NOT también se puede usar para verificar si un objeto es null o undefined.
let usuario = null;
if (!usuario) {
console.log("El usuario no está definido.");
}Lenguaje del código: JavaScript (javascript)
- Explicación:
!usuarioevalúa atruesiusuarioesnulloundefined, lo que desencadena la ejecución del código dentro del bloqueif.
6.4. Uso de operadores lógicos en estructuras de datos complejas
6.4.1. Verificar múltiples propiedades de objetos con AND
El operador AND es muy útil cuando deseas verificar la existencia de varias propiedades dentro de un objeto antes de realizar una operación. Esto es particularmente importante cuando trabajas con datos que pueden no estar completos o pueden venir de fuentes externas.
let usuario = {
nombre: "Manuel",
contacto: {
email: "[email protected]",
telefono: null,
}
};
let telefono = usuario.contacto && usuario.contacto.telefono || "Teléfono no disponible";
console.log(telefono); // "Teléfono no disponible"Lenguaje del código: JavaScript (javascript)
- Explicación: El código verifica si existe la propiedad
usuario.contacto.telefono. Si esnulloundefined, el operador OR asigna un valor predeterminado:"Teléfono no disponible".
6.4.2. Buscar elementos en un array con OR
El operador OR puede usarse para devolver un elemento predeterminado si no se encuentra un valor truthy en un array.
let opciones = [null, undefined, "Opción válida"];
let primeraOpcion = opciones[0] || opciones[1] || opciones[2];
console.log(primeraOpcion); // "Opción válida"Lenguaje del código: JavaScript (javascript)
- Explicación: El operador OR devuelve el primer valor truthy en el array, que en este caso es
"Opción válida".
6.4.3. Combinar operadores lógicos para simplificar el manejo de datos
En estructuras de datos complejas como arrays y objetos anidados, puedes combinar varios operadores lógicos para realizar verificaciones y asignaciones de forma más eficiente.
let carritoCompras = null;
let totalArticulos = carritoCompras && carritoCompras.length || 0;
console.log(totalArticulos); // 0Lenguaje del código: JavaScript (javascript)
- Explicación: Aquí, el operador AND verifica si
carritoComprasno esnullantes de acceder a su longitud. SicarritoComprasesnull, el operador OR asigna0como valor predeterminado.
6.5. Conclusión sobre el funcionamiento de los operadores lógicos con Arrays y Objeto.
Los operadores lógicos son herramientas poderosas para trabajar con arrays y objetos en JavaScript. Al entender cómo interactúan con valores truthy y falsy dentro de estas estructuras, puedes verificar condiciones, manejar datos de manera segura y asignar valores predeterminados de forma eficiente. Esto mejora la legibilidad de tu código y evita errores comunes como acceder a propiedades no definidas o trabajar con arrays vacíos.
7. Ejemplos avanzada: Crear condiciones dinámicas con operadores lógicos.
Una vez que comprendes los operadores lógicos básicos y su interacción con valores truthy y falsy, puedes utilizarlos para crear condiciones más complejas y dinámicas. Estas condiciones permiten manejar entradas variables de forma flexible, generando lógica personalizada en función de diferentes escenarios.
Un uso clave de esta técnica es en la validación de formularios, el control del flujo de la aplicación y la toma de decisiones basadas en datos.
¿Qué son las condiciones dinámicas?
Las condiciones dinámicas son aquellas que no están escritas de manera estática, sino que cambian en función de los datos de entrada. En lugar de una verificación de condición fija, se evalúan varios parámetros que pueden variar y, en función de su valor, se define la lógica del código. Aquí es donde los operadores lógicos (&&, ||, !) entran en juego, permitiendo combinar múltiples condiciones de manera eficiente y compacta.
A continuación se presentan algunas formas avanzadas de usar los operadores lógicos para crear condiciones dinámicas y manejar escenarios complejos.
7.1. Validación de formularios usando operadores lógicos:
La validación de formularios es un escenario clásico donde las condiciones dinámicas son necesarias. Se puede verificar que todos los campos de un formulario estén completos y que cumplan con ciertos criterios (como el formato del email, la longitud de una contraseña, etc.).
Ejemplo de validación dinámica de un formulario:
function validarFormulario(datosUsuario) {
let { nombre, email, edad, contraseña } = datosUsuario;
if (!nombre || !email || !edad || !contraseña) {
return "Por favor, completa todos los campos.";
}
if (email.indexOf("@") === -1 || email.indexOf(".") === -1) {
return "Por favor, introduce un correo electrónico válido.";
}
if (edad < 18 || edad > 100) {
return "La edad debe estar entre 18 y 100 años.";
}
if (contraseña.length < 6) {
return "La contraseña debe tener al menos 6 caracteres.";
}
return "Formulario validado correctamente.";
}
let datosUsuario = {
nombre: "Manuel",
email: "[email protected]",
edad: 25,
contraseña: "pass123",
};
console.log(validarFormulario(datosUsuario)); // "Formulario validado correctamente."Lenguaje del código: JavaScript (javascript)
- Explicación: Usamos los operadores lógicos para validar cada campo del formulario. Si cualquier campo está vacío (falsy), devolvemos un mensaje de error. También usamos
||para combinar verificaciones de email y edad, simplificando la validación.
7.2. Decisiones lógicas basadas en datos de usuarios
En aplicaciones más complejas, puedes necesitar tomar decisiones dinámicas basadas en datos que provienen de los usuarios, como el estado de inicio de sesión, permisos o roles en una plataforma.
Ejemplo de acceso basado en roles:
function verificarAcceso(usuario) {
let { logueado, rol } = usuario;
if (!logueado) {
return "Por favor, inicia sesión para continuar.";
}
return rol === "admin" ? "Acceso completo" : "Acceso limitado";
}
let usuario1 = { logueado: true, rol: "admin" };
let usuario2 = { logueado: true, rol: "usuario" };
let usuario3 = { logueado: false, rol: "usuario" };
console.log(verificarAcceso(usuario1)); // "Acceso completo"
console.log(verificarAcceso(usuario2)); // "Acceso limitado"
console.log(verificarAcceso(usuario3)); // "Por favor, inicia sesión para continuar."Lenguaje del código: JavaScript (javascript)
- Explicación: La función utiliza una condición dinámica para determinar el nivel de acceso del usuario en función de si está logueado y su rol. Si el usuario no está logueado, se le pide que inicie sesión, y según su rol (admin o usuario), se le otorga acceso completo o limitado.
7.3. Lógica condicional con entradas variables
En aplicaciones interactivas, puedes necesitar generar una lógica que cambie en función de las entradas del usuario o los estados de la aplicación. Los operadores lógicos permiten combinar condiciones de manera flexible, generando una lógica adaptativa que responde a distintos estados.
Ejemplo: Selección dinámica de opciones
Imagina que estás construyendo un sistema de recomendación que sugiere actividades en función de la hora del día y las preferencias del usuario.
function recomendarActividad(usuario) {
let { preferencias, hora } = usuario;
if (hora >= 6 && hora < 12 && preferencias.includes("deporte")) {
return "Te recomendamos hacer ejercicio por la mañana.";
}
if (hora >= 12 && hora < 18 && preferencias.includes("lectura")) {
return "Es una buena hora para leer un libro.";
}
if ((hora >= 18 || hora < 6) && preferencias.includes("relajación")) {
return "Relájate viendo una película o escuchando música.";
}
return "Explora nuevas actividades según tus gustos.";
}
let usuario1 = { preferencias: ["deporte"], hora: 8 };
let usuario2 = { preferencias: ["lectura"], hora: 14 };
let usuario3 = { preferencias: ["relajación"], hora: 20 };
console.log(recomendarActividad(usuario1)); // "Te recomendamos hacer ejercicio por la mañana."
console.log(recomendarActividad(usuario2)); // "Es una buena hora para leer un libro."
console.log(recomendarActividad(usuario3)); // "Relájate viendo una película o escuchando música."Lenguaje del código: JavaScript (javascript)
- Explicación: Dependiendo de la hora y las preferencias del usuario, la función sugiere una actividad distinta. Los operadores lógicos ayudan a combinar las condiciones de manera flexible, ajustando las recomendaciones en función de las entradas dinámicas.
7.4. Uso de operadores en bucles y filtros dinámicos
Los operadores lógicos también son útiles en combinación con bucles, filtros y funciones que iteran sobre arrays y objetos. Permiten generar filtros dinámicos que cambian en función de diferentes criterios.
Ejemplo: Filtrar productos por disponibilidad y precio
let productos = [
{ nombre: "Producto 1", disponible: true, precio: 100 },
{ nombre: "Producto 2", disponible: false, precio: 200 },
{ nombre: "Producto 3", disponible: true, precio: 300 },
];
let productosFiltrados = productos.filter(producto => producto.disponible && producto.precio < 250);
console.log(productosFiltrados);
// [{ nombre: "Producto 1", disponible: true, precio: 100 }]Lenguaje del código: JavaScript (javascript)
- Explicación: Usamos
filtercon el operador&¶ generar un filtro dinámico que devuelve solo los productos disponibles y con un precio inferior a 250. Esto permite que el filtro se ajuste a los parámetros que se le pasen.
7.5. Optimización del flujo de la aplicación
El uso de operadores lógicos también ayuda a optimizar el flujo de la aplicación, evitando bloques condicionales redundantes. Puedes construir flujos más concisos usando operadores para retornar resultados directamente, lo que simplifica la estructura de las funciones.
Ejemplo: Retornar valores predeterminados
function obtenerPreferencia(usuario) {
let { preferencias, edad } = usuario;
return (edad >= 18 && preferencias.includes("viajes")) ?
"Usuario adulto que disfruta de los viajes" :
"Explora nuevas opciones";
}
let usuario = { preferencias: ["viajes"], edad: 20 };
console.log(obtenerPreferencia(usuario)); // "Usuario adulto que disfruta de los viajes"Lenguaje del código: JavaScript (javascript)
- Explicación: Aquí, se usa un operador ternario para verificar una condición dinámica, retornando diferentes resultados según los datos del usuario. Esto simplifica el código al evitar múltiples bloques condicionales.
7.6. Conclusión sobre el uso avanzado de operadores lógicos en condiciones dinámicas.
El uso avanzado de operadores lógicos en condiciones dinámicas permite crear lógica flexible, adaptable a diferentes entradas y escenarios complejos, como la validación de formularios, la toma de decisiones basada en datos, y la manipulación de arrays y objetos.
Comprender cómo aplicar estos operadores de manera eficiente mejora tanto la legibilidad como el rendimiento de tu código, haciendo que sea más fácil de mantener y escalar a medida que crecen las necesidades de la aplicación.
8. Los operadores lógicos en Javascript y WordPress.
8.1. ¿Se usan operadores lógicos JavaScript al crear un sitio web con WordPress?
Claro que si!!! Aunque no lo veas directamente en el editor visual de WordPress, los operadores lógicos en JavaScript juegan un papel fundamental detrás de escena en la creación de sitios web dinámicos y personalizados con esta plataforma.
¿Cómo se usan los operadores lógicos en WordPress?
- Temas y plugins personalizados:
- Condicionales: Al crear temas o plugins personalizados, se utilizan operadores lógicos para mostrar o ocultar elementos de la página en función de ciertas condiciones. Por ejemplo, mostrar un mensaje de bienvenida solo a usuarios registrados.
- Validaciones: Se emplean para validar datos ingresados por los usuarios en formularios. Por ejemplo, verificar que un correo electrónico tenga un formato válido antes de enviarlo.
- Personalización: Permiten adaptar el contenido de la página según el dispositivo del usuario (móvil, tablet, escritorio).
- Fragmentos de código (snippets):
- Funciones personalizadas: Los operadores lógicos se usan dentro de funciones personalizadas para tomar decisiones basadas en diferentes parámetros. Por ejemplo, crear una función que muestre un mensaje diferente según el día de la semana.
- Interacción con la API de WordPress:
- Consultas a la base de datos: Al realizar consultas a la base de datos de WordPress, se pueden usar operadores lógicos para filtrar y ordenar los resultados. Por ejemplo, obtener todos los posts de una categoría específica y publicados en un rango de fechas determinado.
8.2. ¿Podemos agregar funcionalidades extras a mi página web hecha con WordPress usando estos operadores lógicos?
Absolutamente! Los operadores lógicos en JavaScript son herramientas poderosas que te permiten agregar funcionalidades personalizadas y dinámicas a tu sitio web de WordPress.
¿Qué tipo de funcionalidades puedes agregar?
- Personalización avanzada:
- Mostrar contenido diferente según el rol del usuario (administrador, editor, suscriptor).
- Adaptar el diseño y la funcionalidad de tu sitio web en función de dispositivos (móvil, tablet, escritorio).
- Crear experiencias personalizadas basadas en el historial de navegación del usuario.
- Validación de formularios:
- Asegurarte de que los usuarios ingresen datos válidos en los formularios de contacto, registro o cualquier otro tipo de formulario.
- Creación de condicionales:
- Mostrar o ocultar elementos de la página en función de ciertas condiciones. Por ejemplo, mostrar un mensaje de error si un campo está vacío.
- Automatización de tareas:
- Crear acciones automáticas basadas en eventos, como enviar un correo electrónico cuando se publica una nueva entrada.
¿Cómo implementar estas funcionalidades?
- Temas y plugins personalizados:
- Crea un tema o plugin hijo de tu tema actual para hacer modificaciones sin perder las actualizaciones.
- Utiliza el archivo
functions.phppara agregar tus funciones personalizadas. - Enlaza tus funciones a los hooks de WordPress para ejecutarlas en el momento adecuado.
- Fragmentos de código (snippets):
- Agrega fragmentos de código directamente en el editor de código de tu tema o plugin.
- Utiliza plugins como Code Snippets para gestionar tus fragmentos de código.
Consideraciones importantes:
- Seguridad: Siempre escapa los datos que ingresan los usuarios para prevenir inyecciones de código.
- Rendimiento: Evita sobrecargar tu sitio web con demasiadas funciones personalizadas.
- Mantenimiento: Mantén tu código actualizado y bien organizado para facilitar futuras modificaciones.
En resumen, los operadores lógicos te permiten crear sitios web de WordPress más personalizados y funcionales. Al comprender cómo utilizarlos, podrás llevar tus proyectos a un nivel superior.
8.3. Ejemplo práctico usando operadores lógicos en JavaScript y una página web en WordPress:
Aquí te dejamos un ejemplo sencillo para visualizar las funcionalidades de estos operadores lógicos.
Supongamos que queremos agregar un formulario en nuestra página web, y que el botón para finalizar dicho formulario se active solo cuando se cumplen ciertas condiciones.
Para ello:
- PRIMERO:
- En nuestro editor de Gutenberg, al hacer clic para agregar un elemento podríamos ir a «HTML personalizado».
- SEGUNDO:
- Ahora podemos agregar el código con el HTML para el formulario, junto con el script y los operadores lógicos para nuestro fin.
- El código a agregar seria el siguiente:
<!-- HTML para el formulario -->
<div class="form-container">
<form id="formulario">
<label for="nombre">Nombre: </label>
<input type="text" id="nombre" placeholder="Escribe tu nombre" required><br>
<label for="email">Email: </label>
<input type="email" id="email" placeholder="Escribe tu email" required><br>
<label><input type="checkbox" id="terminos"> Acepto los términos y condiciones</label><br>
<button id="enviar" disabled class="boton-desactivado">Enviar</button>
</form>
</div>
<!-- SCRIPT con los operadores lógicos -->
<script>
document.querySelectorAll('input').forEach(function(input) {
input.addEventListener('input', function() {
const nombre = document.getElementById('nombre').value.trim();
const email = document.getElementById('email').value;
const terminos = document.getElementById('terminos').checked;
const boton = document.getElementById('enviar');
// Verificar si el email tiene un formato válido (mínimo con '@')
const emailValido = email.includes('@');
// Verificar si todas las condiciones son verdaderas
const formularioValido = nombre && emailValido && terminos;
// Habilitar el botón si todas las condiciones se cumplen
boton.disabled = !formularioValido;
// Cambiar el estilo del botón cuando está habilitado
if (formularioValido) {
boton.classList.remove('boton-desactivado');
boton.classList.add('boton-activo');
} else {
boton.classList.remove('boton-activo');
boton.classList.add('boton-desactivado');
}
});
});
</script>Lenguaje del código: HTML, XML (xml)
Explicación del <script> con los operadores lógicos:
- Operador AND (
&&):- Se usa para verificar que todas las condiciones se cumplan:
- El nombre no está vacío (
nombre). - El email tiene un formato válido (
emailValido). - El usuario ha aceptado los términos (
terminos).
- El nombre no está vacío (
- Si alguna de estas condiciones es falsa, el botón se mantendrá deshabilitado.
- Se usa para verificar que todas las condiciones se cumplan:
- Operador NOT (
!):- Se usa para invertir el resultado. En este caso, el botón se deshabilita (
disabled = true) cuando cualquiera de las condiciones es falsa. - Si todas las condiciones se cumplen,
boton.disabledseráfalsey el botón se habilitará.
- Se usa para invertir el resultado. En este caso, el botón se deshabilita (
- Operador OR (
||) (implícito en la lógica):- Aunque no lo usamos directamente en el código, su funcionalidad es importante para entender cómo se evalúan las expresiones. Por ejemplo, si una de las tres condiciones es falsa, el operador NOT en combinación con AND deshabilitará el botón.
Funcionamiento:
- El botón de «Enviar» se mantiene deshabilitado hasta que se cumplen todas las condiciones, cuando esto sucede, el botón cambia de color y se habilita:
- El campo de nombre debe contener texto.
- El email debe tener un formato básico (contiene
@). - El usuario debe haber aceptado los términos marcando la casilla.
- Si una de las condiciones no se cumple, el botón seguirá deshabilitado.
Este ejemplo combina los tres operadores lógicos (&&, !, ||) de manera efectiva para controlar la interacción del usuario con el formulario en una página de WordPress hecha con Gutenberg.
En la página, este código daría el siguiente resultado:
7. Preguntas frecuentes y resumen sobre operadores lógicos en JS.
Los operadores lógicos en JavaScript permiten realizar comparaciones entre valores booleanos. Se usan para tomar decisiones en el código, evaluando expresiones que devuelven true o false. Son fundamentales en estructuras condicionales como if y while.
Los operadores lógicos más usados son: && (AND), || (OR) y ! (NOT). Se emplean para combinar expresiones booleanas y definir condiciones más complejas en el código.
El operador && devuelve true si ambas expresiones son verdaderas. Si una es false, el resultado será false. Ejemplo: true && false devuelve false.
El operador || devuelve true si al menos una de las expresiones es verdadera. Solo retorna false si ambas son false. Ejemplo: true || false devuelve true.
El operador ! invierte el valor de una expresión booleana. Si es true, devuelve false, y viceversa. Ejemplo: !true devuelve false.
La tabla de verdad define los resultados de los operadores lógicos según los valores de entrada. Por ejemplo, para &&: true && true = true, true && false = false. Para ||: true || false = true.
La precedencia de los operadores lógicos es: primero !, luego &&, y por último ||. Esto significa que las negaciones se evalúan antes, seguidas de las conjunciones y finalmente las disyunciones.
