Boolean en JavaScript : vrai, faux, et ce qui s'y ramène

Le type Boolean ne contient que deux valeurs, true et false. Il porte toutes les décisions prises par un programme JavaScript, sans exception.
3 min de lecture
Believemy logo

C'est le type le plus simple du langage : deux valeurs, et rien d'autre. Il est pourtant au centre de tout, puisque chaque condition, chaque filtre et chaque test finit par se réduire à un booléen.

La difficulté ne vient jamais du type lui-même, mais de ce que JavaScript accepte à sa place. Un if ne réclame pas un booléen, il convertit ce qu'on lui donne, et c'est là que les surprises commencent.


Définition

Le type Boolean n'admet que deux valeurs : true et false. Elles s'écrivent sans guillemets, en minuscules, et ne doivent jamais être confondues avec les chaînes "true" et "false", qui sont du texte.

JAVASCRIPT
const estPaye = true;

console.log(typeof estPaye);      // "boolean"
console.log(49 > 20);             // true, une comparaison produit un booléen
console.log(!estPaye);            // false, la négation inverse

console.log(Boolean("false"));    // true : c'est une chaîne non vide

Les opérateurs de comparaison, l'Égalité stricte (===), l'opérateur in et instanceof renvoient tous un booléen. C'est le format de sortie de toute question posée au programme.


Convertir vers un booléen

Deux écritures existent et donnent exactement le même résultat.

  • Boolean(valeur) convertit explicitement. C'est la forme la plus lisible, notamment pour quelqu'un qui débute.
  • !!valeur applique deux fois la négation, ce qui revient au même. Très répandue, plus courte, mais opaque au premier coup d'œil.

La règle de conversion est décrite en détail dans Truthy et falsy : huit valeurs seulement deviennent false, tout le reste devient true.

JAVASCRIPT
const valeurs = [1, 0, "texte", "", null, 2];

console.log(valeurs.filter(Boolean));  // [1, "texte", 2]

Passer Boolean directement à Array.filter() est l'idiome standard pour retirer d'un Array (tableau) toutes les valeurs vides en une seule expression.


Ce qui ressemble à un booléen sans en être un

Les opérateurs logiques && et || ne renvoient pas un booléen mais l'une de leurs deux opérandes.

JAVASCRIPT
console.log(true && "accès ouvert");   // "accès ouvert"
console.log(false || "valeur par défaut");  // "valeur par défaut"

C'est ce qui permet de les utiliser pour choisir une valeur de repli. Mais dès que 0 ou une chaîne vide font partie des valeurs légitimes, il faut leur préférer la Coalescence des nuls (??), ou l'Opérateur ternaire (?:) quand les deux branches sont explicites.

Bon à savoir

N'écrivez jamais new Boolean(false). Cet objet enveloppe est toujours truthy, y compris quand il contient false, et ne sert plus à rien aujourd'hui.


Questions fréquentes

Question

Faut-il convertir avant un if ?

Ce n'est pas nécessaire, la condition le fait déjà. La conversion explicite se justifie ailleurs : quand une valeur doit être stockée, envoyée à une API ou comparée strictement. Écrire Boolean(x) dans un if ajoute du bruit sans rien changer au comportement.


Question

Comment nommer une variable booléenne ?

La convention consiste à commencer par un verbe d'état : estActif, aPaye, peutModifier, ou leurs équivalents anglais avec is, has, can. Un nom qui se lit comme une question rend la condition compréhensible sans aller lire la déclaration. Évitez les négations dans le nom, qui produisent des doubles négations illisibles.


Question

Comment tester qu'au moins un élément satisfait une condition ?

La méthode Array.some() renvoie directement un booléen : elle s'arrête au premier élément qui correspond. Sa jumelle every répond à la question inverse, celle de savoir si tous les éléments correspondent. Les deux évitent d'écrire une boucle avec un drapeau, qui est plus long et plus facile à casser.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.