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
.