En JavaScript, un valor es falso si la coerción de tipo incorporada de JavaScript lo convierte en false
. Por ejemplo, considere la siguiente declaración if
:
if (v) { console.log('v is not falsy');}
El console.log()
sólo se ejecutará si v
no es uno de los siguientes valores:
false
0
-
0n
: 0 como BigInt -
''
: Cadena vacía null
undefined
NaN
Estos 7 valores son los únicos falsos en JavaScript. Cualquier valor que no sea falso es verdadero.
En particular, un objeto no nulo es siempre verdadero, incluso si su función valueOf()
devuelve un valor falso.
function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));
Recomendaciones
Usar truthy/falsy para coerciones de tipo implícitas en declaraciones if
es típicamente desordenado. Es raro encontrar un caso en el que los 7 valores falsos sean exactamente el conjunto de valores que desea buscar.
Por ejemplo, suponga que está implementando una función que comprueba que una cadena es más corta que 25 caracteres.
function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}
Desgraciadamente, checkLength('')
arrojará un error porque la cadena vacía es falsa. En su lugar, debería comprobar si v
es una cadena:
function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}
Valores nulos
En lugar de comprobar los valores verdaderos/falsos, normalmente se quiere comprobar los valores «nulos». Uno de los casos de uso común para las comprobaciones falsas es asegurarse de que no se obtiene un error TypeError: Cannot read property 'prop' of null
al acceder a una propiedad de un valor v
.
Es seguro acceder a v.prop
a menos que v
sea estrictamente igual a null
o undefined
. Incluso NaN.prop
está bien.
const x = Number('abc');x; // NaNx.prop; // undefined
Comprobar si v == null
es equivalente a v === null || v === undefined
.En otras palabras, un valor es vagamente igual a null
sólo si es estrictamente igual a null
o undefined
. Por lo tanto, comprobar si v == null
es a menudo más preciso que comprobar si los valores son verdaderos o falsos.
Más tutoriales de fundamentos
- Cómo comparar objetos en JavaScript
- Cómo comprobar si una variable JavaScript está indefinida
- La diferencia entre let y var en JavaScript
- Interpolación de cadenas en JavaScript
- Variables globales en JavaScript
- Cómo comprobar el `NaN` en JavaScript
- Enums en JavaScript
.