[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Operators/Logical_OR [Back]  [Original]

Operador lgico OR (||) - JavaScript | MDN

Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.

View in English Always switch to English

Operador lgico OR (||)

Baseline Widely available

This feature is well established and works across many devices and browser versions. Its been available across browsers since julio de 2015.

El operador lgico OR (||) (disyuncin lgica) es verdadero para un conjunto de operandos si y solo si uno o ms de sus operandos es verdadero. Es normalmente usado con valores booleanos (lgicos). Cuando es as, retorna un valor booleano. Sin embargo, el operador || puede retornar el valor de uno de los operandos especificados, por lo que si este operador es usado con valores no booleanos, retornar un valor no booleano.

In this article

Prubalo

const a = 3;
const b = -2;

console.log(a > 0 || b > 0);
// Expected output: true

Sintaxis

js
x || y

Descripcin

Si x puede ser convertida a true, retorna x; en caso contrario, retorna y.

Si un valor puede ser convertido a true, el valor es conocido como truthy. Si un valor puede ser convertido a false, el valor es conocido como falsy.

Ejemplos de expresiones que pueden ser convertidas a false son:

  • null;
  • NaN;
  • 0;
  • cadena vaca ("" o '' o ``);
  • undefined.

Aunque el operador || puede ser usado con operandos que no son valores booleanos, an puede ser considerado un operador booleano ya que su valor de retorno siempre puede ser convertido a un booleano primitivo. Para explcitamente convertir su valor de retorno (o cualquier expresin en general) al correspondiente valor booleano, se debe usar un doble (operador lgico NOT) o el contructor del objeto Boolean.

Evaluacin de cortocircuito (Short-circuit)

La expresin lgica OR es evaluada de izquierda a derecha, es posible una evaluacin de cortocircuito (short-circuit) usando la siguiente regla:

(alguna expresin truthy) || expresin es evaluada por cortocircuito (short-circuit) a la expresin truthy.

Cortocircuito (Short-circuit) significa que la parte de la expresin de arriba no es evaluada, por lo que ningn efecto secundario resultante de ella es realizado (por ejemplo, si la expresin es una llamada a una funcin, la llamada nunca es realizada). Esto ocurre porque el valor del operador ya est determinado despus de la evaluacin del primer operando. Veamos un ejemplo:

js
function A() {
  console.log("llamada a A");
  return false;
}
function B() {
  console.log("llamada a B");
  return true;
}

console.log(B() || A());
// Imprime "llamada a B" por la llamada a la funcin,
// despus imprime `true` (que es el valor resultante del operador)

Precedencia de operadores

Las siguientes expresiones pueden parecer equivalentes, pero no lo son, porque el operador && es ejecutado antes del operador || (vase precedencia de operadores).

js
true || false && false; // retorna `true`, porque `&&` es ejecutado primero
(true || false) && false; // retorna `false`, porque la agrupacin tiene la ms alta precedencia

Ejemplos

Usando el operador lgico OR

El siguiente cdigo muestra ejemplos del operador lgico OR (||).

js
true || true; // t || t retorna `true`
false || true; // f || t retorna `true`
true || false; // t || f retorna `true`
false || 3 === 4; // f || f retorna `false`
"Cat" || "Dog"; // t || t retorna "Cat"
false || "Cat"; // f || t retorna "Cat"
"Cat" || false; // t || f retorna "Cat"
"" || false; // f || f retorna `false`
false || ""; // f || f retorna ""
false || varObject; // f || objeto retorna varObject

Nota: Si se usa este operador para proveer un valor por defecto a alguna variable, se debe ser consciente que cualquier valor falsy no ser usado. Si solo se necesita filtrar null o undefined, considere usar el operador de coalescencia nula (??).

Reglas de conversin para booleanos

Convirtiendo el operador lgico AND al operador lgico OR

La siguiente operacin involucra booleanos:

js
bCondition1 && bCondition2

es siempre igual a:

js
!(!bCondition1 || !bCondition2)

Convirtiendo el operador lgico OR al operador lgico AND

La siguiente operacin involucra booleanos:

js
bCondition1 || bCondition2

es siempre igual a:

js
!(!bCondition1 && !bCondition2)

Removiendo parntesis anidados

Ya que las expresiones lgicas son evaluadas de izquierda a derecha, siempre es posible remover los parntesis de una expresin compleja siguiendo las siguientes reglas.

La siguiente operacin compuesta involucra booleanos:

js
bCondition1 && (bCondition2 || bCondition3)

es siempre igual a:

js
!(!bCondition1 || !bCondition2 && !bCondition3)

Especificaciones

Specification
ECMAScript 2027 LanguageSpecification
# prod-LogicalORExpression

Compatibilidad con navegadores

Vase tambin


Web Proxy Viewer  |  New URL  |  Original Page