¿Qué es «Falsy» en JavaScript?

28 de octubre de 2019

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

.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.