Boolean
=======

L'objet **`Boolean`** est une enveloppe objet pour représenter une valeur booléenne.

Description
-----------

La valeur passée en premier paramètre est, si nécessaire, convertie en valeur booléenne. Si la valeur est omise ou est `0`, `-0`, `null`, `false`, `NaN`, `undefined` ou une chaîne de caractères vide (`""`), l'objet a une valeur initiale de `false` (faux). Toutes les autres valeurs, y compris n'importe quel objet, un tableau vide (`[]`), ou une chaîne de caractères `"false"`, créent un objet avec une valeur initiale de `true` (vrai).

Il ne faut pas confondre les valeurs primitives booléennes `true` et `false` avec les valeurs `true` et `false` d'un objet `Boolean`.

Tout objet dont la valeur n'est ni `undefined` ni `null`, incluant un objet `Boolean` dont la valeur est fausse, est évalué à `true` lorsqu'il est utilisé dans une instruction conditionnelle. Par exemple, la condition de l'instruction `if` dans le code suivant est validée, car l'expression `x` est évaluée à `true` :


```js
var x = new Boolean(false);
if (x) {
  // ce code est exécuté
}
```


Ce comportement ne s'applique pas aux valeurs primitives booléennes. Par exemple, dans le code suivant, la condition est évaluée à `false` :


```js
var x = false;
if (x) {
  // ce code n'est pas exécuté
}
```


Il ne faut pas utiliser un objet `Boolean` pour convertir une valeur non-booléenne en une valeur booléenne. On utilisera plutôt `Boolean` comme une fonction (sans l'opérateur `new`) ou alors la double négation :


```js
var x = Boolean(expression); // conseillé
var x = !!expression; // une autre méthode
var x = new Boolean(expression); // à ne pas utiliser
```


Si vous spécifiez un objet quelconque, incluant un objet booléen qui vaut `false`, le nouvel objet `Boolean` vaudra `true`.


```js
var monFalse = new Boolean(false); // valeur initiale à false
var g = Boolean(monFalse); // valeur initiale à true
var maChaine = new String("Hello"); // un objet String
var s = Boolean(maChaine); // valeur initiale à true
```


Il ne faut pas utiliser un objet `Boolean` à la place d'une valeur primitive booléenne.

**Note :** Lorsque la propriété historique, non-standard, `document.all` est utilisée comme argument, le constructeur `Boolean` renvoie un objet booléen faux. Cette propriété étant non-standard, son utilisation est déconseillée.

Lorsqu'on utilise l'opérateur `==` afin de comparer faiblement un objet avec une valeur primitive booléenne, il est préférable de comprendre clairement ce qui est comparé. Par exemple :


```js
if ([]) {
  console.log("[] est équivalent à vrai");
  // affiche "[] est équivalent à vrai" dans la console
}

if ([] == false) {
  console.log("[] == false");
  // affiche "[] == false"
}
```


En effet, on a bien `[] == false` bien que `[]` est équivalent à vrai. La comparaison `[] == false` compare la *valeur* de `[]` avec `false`. Or, pour obtenir la *valeur* de `[]`, le moteur JavaScript appelle `[].toString()` dont le résultat vaut `""`, et c'est *cette chaîne de caractères* qui est comparée avec `false`. Autrement dit, `[] == false` est équivalent à `"" == false`. Avec `""` qui est équivalent à faux, on a donc le résultat observé.

Constructeur
------------

`Boolean()`

Crée un nouvel objet `Boolean`.

Méthodes des instances
----------------------

`Boolean.prototype.toString()`

Renvoie une chaîne de caractères qui est `"true"` ou `"false"` selon la valeur de l'objet. Il s'agit d'une surcharge de la méthode `Object.prototype.toString()`.

`Boolean.prototype.valueOf()`

Renvoie la valeur primitive de l'objet `Boolean`. Il s'agit d'une surcharge de la méthode `Object.prototype.valueOf()`.

Exemples
--------

### Créer des objets `Boolean` dont la valeur initiale est `false`


```js
var bSansParam = new Boolean();
var bZero = new Boolean(0);
var bNull = new Boolean(null);
var bChaineVide = new Boolean("");
var bfalse = new Boolean(false);
```

### Créer des objets `Boolean` dont la valeur initiale est `true`


```js
var bTrue = new Boolean(true);
var bChaineTrue = new Boolean("true");
var bChaineFalse = new Boolean("false");
var bSuLin = new Boolean("Su Lin");
var bArrayProto = new Boolean([]);
var bObjProto = new Boolean({});
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean-objects |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Booléen
* Valeurs primitives booléennes
* Le type de données booléen sur Wikipédia