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.
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 videLes 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.!!valeurapplique 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.
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.
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.
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
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.
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.
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.