Le nullish coalescing operator en JavaScript

Astucejavascript

Publié par le (4743 lectures)

Le Nullish coalescing operator qui s'écrit avec un double point d'interrogation ?? en JavaScript est un opérateur de comparaison qui permet de renvoyer la valeur d'une expression si elle est définie et non nulle, ou sinon de renvoyer une valeur par défaut.

Il est utilisé depuis ECMAScript 2020 pour éviter les erreurs de type undefined lorsqu'on tente d'accéder à des propriétés d'objets ou à des éléments de tableaux qui pourraient ne pas être définis.

On peut le compléter par un caractère = pour obtenir un nullish coalescing assignment, qui pourra servir quant à lui à assigner une valeur si la variable avec laquelle on souhaite l'utiliser (celle qui doit recevoir la valeur, à gauche donc) n'est pas déjà définie.

Par exemple on pourra écrire avec un nullish coalescing operator

// Avec un objet
let fruit = { nom: "Kiwi", vitamine: "C" }
let dessert = fruit.nom ?? "Banane"
// dessert contiendra "Kiwi"

// Avec un tableau
let nombres = [1, 2, undefined, 4, null, 6]
let premierNombre = nombres[0] ?? 0
// premierNombre contiendra 1

...pour éviter d'écrire ceci :

let dessert
let fruit = { nom: "Kiwi", vitamine: "C" }
if(fruit && fruit.nom) {
  dessert = fruit.nom
} else {
  dessert = "Banane"
}

Et pour utiliser un nullish coalescing assignment, on pourra écrire :

// Avec un objet
let fruit = { nom: "Kiwi" }
fruit.vitamine ??= "C"
// fruit.vitamine contiendra "C" car n'était pas définie auparavant

fruit.vitamine ??= "D"
// fruit.vitamine contiendra toujours "C"

// Avec un tableau
let nombres = [1, 2, undefined, 4, null, 6]
nombres[0] ??= 0
// nombres[0] contient alors toujours 1

Il existe aussi l'opérateur de coalescence de faible priorité qui s'écrit avec un double pipe (aussi nommé "barre verticale" ou "tube" en français) ||, mais celui-ci renvoie la première valeur vraie rencontrée, alors que le Nullish coalescing operator ?? renvoie uniquement la première valeur définie et non nulle rencontrée.

Commentaires

Merci pour cette info, qui m'a permis de découvrir que le Nullish coalescing operator existe aussi en php. On en apprend tous les jours !

Commenter

Vous devez être inscrit et identifié pour utiliser cette fonction.

Connectez-vous (déjà inscrit)

Oubli de mot de passe ? Pas de panique, on va le retrouver

Pas encore inscrit ? C'est très simple et gratuit.