Introduction


Vous avez peut-être déjà rencontré l’opérateur ?? lors de vos développements en JavaScript.


const result = first ?? second;


Si vous vous êtes déjà demandé à quoi il servait, et en quoi il différait de l’opérateur logique ||, vous devriez en apprendre un peu plus en lisant cet article.


Contexte


En Javascript, il existe un opérateur logique OU, noté ||. Il retourne la première valeur équivalente à true.


Seules ces 6 valeurs sont considérées comme équivalentes à false :

  • false
  • undefined
  • null
  • '' (texte vide)
  • NaN
  • 0


Voici quelques exemples de résultats obtenus avec l’opérateur || :


const valeurNulle = null; // équivalent à false
const texteVide = ''; // équivalent à false
const zero = 0; // équivalent à false
const unNombre = 12;
const unTexte = 'coucou';

valeurNulle || unNombre // 12
valeurNulle || texteVide // ''
texteVide || valeurNulle // null
texteVide || unNombre // 12
zero || unNombre // 12
valeurNulle || unNombre || unTexte // 12


La différence avec ??


L’opérateur ?? (en français "opérateur de coalescence des nuls", et en anglais "Nullish coalescing operator") renvoie quant à lui la première valeur qui n’est ni null, ni undefined.


En d’autres termes, si le résultat que vous attendez peut être équivalent à false, mais que vous souhaitez le conserver, vous pouvez utiliser l’opérateur ??.


Voici un comparatif des résultats obtenus avec ?? pour les exemples du paragraphe précédent.



Conclusion


En résumé, dans l’expression x ?? y :

  • si x est null ou undefined, le résultat sera y
  • si x est différent de null et différent de undefined, le résultat sera x.


L’opérateur ?? est donc très utile lorsque vous avez uniquement besoin de tester qu’une valeur est null ou undefined.