Cortocircuito en JavaScript

Migel Hewage Nimesha 15 febrero 2024
  1. Operador lógico AND de JavaScript
  2. Operador lógico OR de JavaScript
  3. Cortocircuito en JavaScript
Cortocircuito en JavaScript

Cada lenguaje de programación admite varios operadores, como operadores aritméticos, de asignación, de comparación y lógicos. Tampoco hay diferencia con JavaScript; admite todos los operadores que admiten la mayoría de los lenguajes de programación.

En esta guía, la atención se centra en los operadores lógicos y su capacidad de cortocircuito.

Operador lógico AND de JavaScript

Los operadores lógicos AND y OR son dos operadores lógicos populares que eventualmente se evaluarán como verdaderos o falsos. El operador lógico AND se evalúa como verdadero solo cuando ambos operandos son verdaderos; de lo contrario, siempre devolverá falso.

Además, el operador AND devolverá falso si alguno de los operandos es falso.

console.log(false && true);
console.log(false && false);
console.log(true && false);
console.log(true && true);

Producción:

Operador lógico Y

Operador lógico OR de JavaScript

A diferencia del operador lógico “Y”, el operador lógico “O” devuelve verdadero si alguno de los operandos es verdadero. Siempre que ambos operandos son falsos, este operador da un resultado falso.

console.log(false || true);
console.log(true || false);
console.log(true || true);
console.log(false || false);

Producción:

Operador OR lógico

Cortocircuito en JavaScript

JavaScript evalúa los dos operadores anteriores de izquierda a derecha dentro de una expresión. En el peor de los casos, comienza desde el principio (extremo izquierdo) y se evalúa hacia el extremo derecho hasta que se evalúan todos los operandos.

No es el caso cuando hay un cortocircuito. Con el mecanismo de cortocircuito de JavaScript, la expresión se evalúa de izquierda a derecha hasta que el resultado del operando restante no afecte el valor del resultado ya evaluado.

Cortocircuito en Operador Lógico AND

El operador lógico AND se cortocircuitará si el primer operando es falso. Independientemente de si el operando subsiguiente es verdadero o falso, la expresión se evaluará como falsa.

Por lo tanto, el tiempo de ejecución de JavaScript no evaluará los operandos restantes en la expresión.

Veamos el siguiente ejemplo, que demuestra el comportamiento anterior.

console.log(true && 'it should come here and print me.');

Producción:

AND Salida de cortocircuito del operador 1

Dado que el primer operando es “true”, esta expresión no provocará un cortocircuito. Por lo tanto, también evaluará el siguiente operando. Como era de esperar, el valor del segundo operando se imprimió en la consola, lo que significa que JavaScript evaluó ambos operandos.

A continuación, utilizaremos false como primer operando.

console.log(false && 'short-circuits and will not print me');

Producción:

AND Salida de cortocircuito del operador 2

Como era de esperar, el resultado es “false” y JavaScript no ha evaluado más el segundo operando. Significa que la expresión ha sido cortocircuitada.

Cortocircuito en Operador Lógico OR

A diferencia del operador lógico “Y”, el operador lógico “O” se cortocircuita cuando el primer operando es verdadero, como se muestra a continuación.

console.log(true || 'i will not be printed');

Producción:

O Salida de cortocircuito del operador

Como puede ver, la salida es verdadera, por lo que el segundo operando ni siquiera se evalúa.

El cortocircuito es una función útil en JavaScript que ignora las partes no deseadas del código y ayuda a un procesamiento eficiente.

Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Artículo relacionado - JavaScript Operator