Saltar al contenido

Operadores lógicos en JavaScript: &&, ||, !, truthiness y precedencia

JavaScript escribe los operadores como !, && y ||, los ordena en ese orden, y permite que cualquier valor haga de booleano mediante la «veracidad» (truthiness). No hay exportación a JavaScript en Tangibool; esta página es una guía de traducción.

LógicaJavaScriptNota
NOT A!aConvierte; !!a normaliza a booleano
A AND Ba && bDevuelve un operando; cortocircuito
A OR Ba || bDevuelve un operando; ?? es distinto
A XOR Ba !== b entre booleanos^ da un número
A -> B!a || bNo hay operador de implicación
A <-> Ba === b entre booleanosIgualdad estricta
TRUE, FALSEtrue, falseEn minúscula; hay ocho valores falsos

!a, a && b y a || b son los operadores lógicos, con ! ligando con más fuerza, luego &&, luego ||, el mismo orden que NOT, AND, OR aquí. Como en Python, && y || son de cortocircuito y devuelven un operando: 0 || 'default' es 'default', y user && user.name es user cuando user es null. El operador ?? no es un OR lógico: solo pasa al segundo operando con null y undefined, no con 0, '' ni false.

La veracidad es la trampa. Los valores falsos son false, 0, -0, 0n, '', null, undefined y NaN; todo lo demás, incluidos 'false', [] y {}, es verdadero. Una regla evaluada sobre esos valores no es la regla evaluada sobre VERDADERO y FALSO, así que normaliza con Boolean(x) o !!x en la frontera y compara con ===. La semántica del motor tiene dos valores y ninguna conversión, que es la razón de escribir la regla allí primero.

Los operadores de un solo carácter &, |, ^ y ~ convierten sus operandos en enteros de 32 bits, así que true & true es 1, un número, y ~true es -2. Para el o exclusivo entre booleanos usa a !== b; para la implicación escribe !a || b. El analizador de aquí rechaza &, |, ^ y ~ con una corrección, porque una fórmula copiada de JavaScript con esos operadores cambiaría de significado en silencio.

El error habitual

Tratar if (value) como una prueba de true. Es una prueba de veracidad: una cadena vacía, el cero y NaN toman la rama falsa, y la cadena 'false' toma la verdadera. Convierte en la frontera, y después razona sobre dos valores.

Preguntas

¿Tangibool puede exportar JavaScript?

No. Las exportaciones son Python, SQL, SMT-LIB y LaTeX, más CSV y Markdown para las tablas. Para JavaScript, traduce con la tabla de arriba y conserva la tabla de verdad como oráculo de las pruebas.

¿a || b es el OR inclusivo?

Entre dos booleanos, sí, y es VERDADERO cuando lo son los dos. Con otros valores devuelve el primer operando verdadero, y por eso 0 || 5 es 5 y no true.

Relacionado

Véase también

Lenguajes

Generado a partir del motor de Tangibool, semántica tangibool-semantics/1, motor 1.0.0, compilación . Cada tabla, mapa, simplificación y veredicto de estas páginas lo calculó el motor de Tangibool al compilar el sitio, y cada afirmación la volvió a comprobar el mismo verificador exacto que usa la app. Los límites se indican donde aplican. © 2026 Foreranger LTD.