true en JavaScript : la valeur vraie du type booléen

true est l'une des deux valeurs du type booléen en JavaScript. Ce qui la produit, ce qui lui ressemble sans en être, et comment la tester sans piège.
3 min de lecture
Believemy logo

Un programme passe son temps à trancher. Ce panier contient-il quelque chose, cet utilisateur a-t-il payé ? Pour répondre, il faut un type de donnée qui ne connaisse que deux réponses : le booléen, dont true est la réponse positive.


Définition

true est un littéral du langage, l'une des deux seules valeurs du type booléen avec false. Il s'écrit en minuscules, sans guillemets, et c'est un mot réservé.

On l'obtient en l'écrivant à la main, ou en laissant une comparaison le produire. La seconde façon est de très loin la plus fréquente.

JAVASCRIPT
const estAdmin = true;        // écrit à la main

const panier = [1, 2, 3];
console.log(panier.length > 0);   // true, produit par la comparaison
console.log(panier.includes(2));  // true, produit par une méthode

console.log(typeof true);         // "boolean"

Retenez ceci : toute comparaison renvoie un booléen et rien d'autre. Vous n'avez donc jamais à fabriquer true pour écrire une condition.

Bon à savoir

Le motif if (estActif === true) est redondant. if (estActif) dit la même chose, en plus court, et c'est la convention dans tout le langage.


Vrai, et ce qui passe pour vrai

Un if n'exige pas un vrai booléen. Il accepte n'importe quelle valeur, puis décide lui-même si elle compte comme vraie. Il faut donc séparer true d'un côté, et de l'autre tout ce que le langage traite comme vrai sans en être.

La règle se retient par la négative : Truthy et falsy liste les huit valeurs considérées comme fausses, et tout le reste est vrai. Y compris des valeurs qui surprennent.

ValeurDans un testÉgale à true avec === ?
trueVraieOui
1VraieNon
"0"Vraie, la chaîne n'est pas videNon
[]Vraie, un tableau reste un objetNon
"false"Vraie, c'est du texteNon

Les trois dernières lignes causent de vrais dégâts. Un tableau vide passe un test alors qu'il ne contient rien, et la chaîne "false" lue depuis une URL est parfaitement vraie.


Convertir en booléen

Pour transformer une valeur quelconque en un vrai booléen, deux écritures équivalentes existent.

JAVASCRIPT
console.log(Boolean("0"));   // true
console.log(!!"0");          // true, écriture courte

console.log(Boolean(""));    // false
console.log(Boolean(0));     // false

// Le piège de la chaîne venue d'ailleurs
const brut = "false";
console.log(Boolean(brut));        // true
console.log(brut === "true");      // false, et c'est le bon test

Le double point d'exclamation n'est pas un opérateur : c'est la négation appliquée deux fois, qui ramène la valeur à son booléen équivalent. La conversion explicite par Boolean (booléen) reste plus lisible dans du code partagé.


Questions fréquentes

Question

Pourquoi 2 == true renvoie-t-il false ?

Parce que l'Égalité faible (==) ne compare pas la véracité, elle convertit. true devient le nombre 1, puis 2 est comparé à 1, et le résultat est faux. C'est pour cela que comparer une valeur à true est déconseillé : posez la condition directement, ou utilisez l'Égalité stricte (===).


Question

Comment lire un booléen envoyé par un serveur ?

Si la donnée arrive en JSON, elle est déjà un vrai booléen après analyse. Si elle arrive dans une URL ou un attribut HTML, c'est forcément du texte : comparez explicitement avec valeur === "true", car toute chaîne non vide passerait un test brut.


Question

Faut-il utiliser new Boolean(true) ?

Non, jamais. Cette forme crée un objet enveloppant, et un objet est toujours vrai dans un test, y compris new Boolean(false), soit l'inverse exact du comportement attendu. Utilisez la fonction sans new, qui renvoie bien un booléen primitif.

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.