Qu’est-ce que « Falsy » en JavaScript?

28 oct. 2019

En JavaScript, une valeur est falsy si la coercition de type intégrée à JavaScript la convertit en false. Par exemple,considérez l’instruction if ci-dessous:

if (v) { console.log('v is not falsy');}

La console.log() ne s’exécutera que si v n’est pas l’une des valeurs suivantes:

  • false
  • 0
  • 0n : 0 comme BigInt
  • '' : Chaîne vide
  • null
  • undefined
  • NaN

Ces 7 valeurs sont les seules valeurs falsy en JavaScript. Toute valeur qui n’est pas falsy est truthy.

En particulier, un objet non nul est toujours truthy, même si sa fonction valueOf() renvoie une valeur falsy.

function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));

Recommandations

L’utilisation de truthy/falsy pour les coercitions de type implicites dans les déclarations if esttypiquement désordonnée. Il est rare de trouver un cas où les 7 valeurs falsy sont exactement l’ensemble des valeurs que vous voulez rechercher.

Par exemple, supposons que vous implémentez une fonction qui vérifie qu’une chaîne est plus courte que 25 caractères.

function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}

Malheureusement, checkLength('') jettera une erreur parce que la chaîne vide estfalsy. Au lieu de cela, vous devriez vérifier si v est une chaîne de caractères:

function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}

Valeurs nulles

Au lieu de vérifier les valeurs véridiques/falses, vous voulez généralement vérifier les valeurs « nulles ». L’un des cas d’utilisation courants pour les vérifications falsy est de s’assurer que vous n’obtenez pas une erreur TypeError: Cannot read property 'prop' of null en accédant à une propriété d’une valeur v.

Il est sûr d’accéder à v.prop à moins que v soit strictement égal à null ou undefined. Même NaN.prop est bien.

const x = Number('abc');x; // NaNx.prop; // undefined

Vérification si v == null est équivalent à v === null || v === undefined.En d’autres termes, une valeur est vaguement égale à null seulement si elle est strictement égale à null ou undefined. Ainsi, vérifier si v == null est souvent plus précis que de vérifier les valeurs véridiques ou fausses.

Plus de tutoriels fondamentaux

  • Comment comparer des objets en JavaScript
  • Comment vérifier si une variable JavaScript est indéfinie
  • La différence entre let. et var en JavaScript
  • Interpolation de chaînes en JavaScript
  • Variables globales en JavaScript
  • Comment vérifier le `NaN` en JavaScript
  • Enums JavaScript

.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.