Coalescence nulle

L'opérateur de coalescence nulle, ou en anglais "Nullish coalescing", permet de différencier avec certitude les valeurs nullish des valeurs falsy. En JavaScript, de nombreuses valeurs sont falsy. Par exemple, les chaînes vides "", le nombre 0, undefined, null, false, NaN, etc. sont tous interprétés comme étant équivalent à false dans le cadre d'une condition.

Cet opérateur est particulièrement utile pour définir des valeurs par défaut.

Par exemple:

let user;
user ?? "Anonyme"; // Retourne "Anonyme", car user n'est pas définit

tandis que:

let user = "Nikki";
user ?? "Anonyme"; // Retourne "Nikki", car user est définit

Différence avec le ou logique

Les code précédent ☝️ est régulièrement écrit avec un l'opérateur logique ou (||). Cependant, cet opérateur ne différencie pas les valeurs falsy, ce qui peut générer des enjeux.

Par exemple:

let counter = 0;
console.log(counter ?? "Aucune valeur de définit"); // Retourne 0

Tandis que le même code avec un opérateur logique ou (||):

let counter = 0;
console.log(counter || "Aucune valeur de définit"); // Retourne "Aucune valeur de définit"

Car counter est interprété comme étant falsy.

Chaînage optionnel

L'opérateur de chaînage optionnel (?.) valide l'existence d'un élément avant d'accéder à la commande suivante après le point (.).

Par exemple, imaginons que l'objet suivant est disponible dans les exemples de codes suivant:

let user = {
  name: "Nikki"
};

Il est possible d'accéder à la propriété name "Nikki" via l'appel suivant:

user.name; // Retourne "Nikki"

Tout comme avec l'opérateur de chaînage optionnel:

user?.name; // Retourne aussi "Nikki"