Menu
Français

Valeurs truthy et falsy en JavaScript : liste complète

Ce qui est considéré comme truthy ou falsy en JavaScript : la liste exhaustive des valeurs falsy et la coercition booléenne expliquée par l'exemple.

Chaque valeur a son humeur booléenne

En JavaScript, tu peux glisser n'importe quelle valeur là où un booléen est attendu — dans un if, comme condition d'un while, à côté d'un && ou d'un ||. Dès que tu fais ça, la valeur subit une coercition booléenne vers true ou false. Les valeurs qui deviennent false sont dites falsy. Tout le reste est truthy.

index.js
Output
Click Run to see the output here.

Pas de fonction de conversion, pas de cast explicite — JavaScript s'en charge tout seul. Les règles sont simples et peu nombreuses : une fois que tu connais la liste des valeurs falsy, tout le reste en découle.

La liste complète des valeurs falsy en JavaScript

Il existe exactement sept valeurs falsy. Tout le reste dans le langage est truthy.

index.js
Output
Click Run to see the output here.

Et voilà, la liste complète :

  • false — le booléen en personne.
  • 0 et -0 — les deux zéros.
  • 0n — le zéro version BigInt.
  • "" — la chaîne vide (avec guillemets simples, doubles ou backticks, peu importe).
  • null — la valeur qui dit « volontairement rien ».
  • undefined — la valeur « non définie ».
  • NaN — le résultat d'un calcul invalide comme 0 / 0.

Apprends ces sept-là par cœur. Ensuite, devant n'importe quelle valeur douteuse, pose-toi la question : « est-ce qu'elle fait partie des sept ? ». Si non, c'est truthy.

Les pièges : "0", [] et {}

C'est ici que les débutants se font avoir. Beaucoup de valeurs semblent vides mais sont en réalité truthy :

index.js
Output
Click Run to see the output here.

Les chaînes de caractères ne sont falsy que lorsqu'elles sont vides. "0" contient un caractère, elle est donc truthy. Les tableaux et les objets sont toujours truthy — même vides — parce que JavaScript les traite comme des objets, et tous les objets sont truthy, peu importe ce qu'ils contiennent.

Si tu viens de Python, c'est sans doute le changement mental le plus déroutant. En Python, [] et {} sont falsy. En JavaScript, pas du tout.

Tester la « vacuité » correctement

Comme [] et {} sont truthy, impossible de les passer directement à un if pour vérifier s'ils sont vides. Il faut être explicite :

index.js
Output
Click Run to see the output here.

Pareil pour les chaînes, si tu veux considérer qu'une chaîne composée uniquement d'espaces est vide :

index.js
Output
Click Run to see the output here.

Truthy/falsy, c'est bien pratique pour aller vite, mais ça ne dispense pas de réfléchir à ce que « vide » veut vraiment dire pour tes données.

Forcer la conversion en vrai booléen

Parfois, on veut un vrai true ou false, pas juste une valeur considérée comme truthy. Deux tournures classiques existent pour ça :

index.js
Output
Click Run to see the output here.

Boolean(x) fait la conversion explicite. !!x, c'est la version raccourcie du même principe : le premier ! convertit en booléen et inverse la valeur, le second ! la remet à l'endroit. Les deux s'utilisent couramment. !! est plus court ; Boolean() se lit plus clairement.

On croise souvent !! dans un return, quand une fonction doit renvoyer un vrai booléen bien propre :

index.js
Output
Click Run to see the output here.

Comportement truthy/falsy avec && et ||

Les opérateurs logiques en JavaScript ne renvoient pas true ou false : ils renvoient directement l'un des opérandes. Et savoir lequel dépend justement de la coercition booléenne (valeurs truthy ou falsy) :

index.js
Output
Click Run to see the output here.

C'est pour ça que le pattern value || defaultValue est si répandu pour définir des valeurs par défaut. Mais attention au piège : il met toutes les valeurs falsy dans le même panier, y compris 0 et "", qui sont souvent des entrées parfaitement valides :

index.js
Output
Click Run to see the output here.

Si tu veux uniquement gérer le cas null ou undefined, utilise plutôt l'opérateur de coalescence des nuls ??. Il a droit à sa propre page.

Aide-mémoire

index.js
Output
Click Run to see the output here.

Imprimez-la, collez-la au-dessus de l'écran, et passez à la suite.

La suite : itérateurs et générateurs

Maintenant que les conditions et les boucles n'ont plus de secrets pour vous, le prochain chapitre s'attaque à la façon dont JavaScript permet aux valeurs de se produire à la demande. Les itérateurs et générateurs, c'est la mécanique qui se cache derrière for...of, le spread et bon nombre d'API modernes — et c'est ce qu'on voit tout de suite après.

Questions fréquentes

Quelles sont les valeurs falsy en JavaScript ?

Il y en a exactement sept : false, 0, -0, 0n (le zéro BigInt), '' (la chaîne vide), null, undefined et NaN. Tout le reste est truthy — y compris '0', 'false', [] et {}. Retenez cette courte liste par cœur et vous saurez classer n'importe quelle valeur par élimination.

Un tableau vide est-il truthy ou falsy en JavaScript ?

Truthy. if ([]) { ... } exécute bien le bloc, ce qui surprend pas mal de développeurs venus de Python ou de PHP. Les tableaux et les objets sont des objets, et tous les objets sont truthy, peu importe leur contenu. Pour tester un tableau vide, utilisez explicitement arr.length === 0.

Comment convertir une valeur en booléen en JavaScript ?

Deux options : Boolean(value) pour la forme explicite, et !!value comme raccourci (une double négation qui force la coercition puis inverse à nouveau). Les deux suivent les mêmes règles truthy/falsy. À utiliser quand vous voulez un vrai true/false, pas juste un résultat « truthy ».

Apprendre à coder avec Coddy

COMMENCER