Mise à jour
JavaScript prend désormais en charge la fonction opérateur de coalescence nul ( ??) . Elle retourne son opérande de droite lorsque son opérande de gauche est null
o undefined
et, sinon, renvoie son opérande de gauche.
Ancienne réponse
Veuillez vérifier la compatibilité avant de l'utiliser.
L'équivalent en JavaScript de l'opérateur de fusion de nullité en C# ( ??
) utilise un OU logique ( ||
) :
var whatIWant = someString || "Cookies!";
Dans certains cas (précisés ci-dessous), le comportement ne correspond pas à celui du C#, mais il s'agit de la manière générale et laconique d'attribuer des valeurs par défaut/alternatives en JavaScript.
Clarification
Indépendamment du type du premier opérande, si la transformation en booléen donne le résultat suivant false
l'affectation utilise le deuxième opérande. Attention à tous les cas ci-dessous :
alert(Boolean(null)); // false
alert(Boolean(undefined)); // false
alert(Boolean(0)); // false
alert(Boolean("")); // false
alert(Boolean("false")); // true -- gotcha! :)
Cela signifie :
var whatIWant = null || new ShinyObject(); // is a new shiny object
var whatIWant = undefined || "well defined"; // is "well defined"
var whatIWant = 0 || 42; // is 42
var whatIWant = "" || "a million bucks"; // is "a million bucks"
var whatIWant = "false" || "no way"; // is "false"
39 votes
Note de 2018 :
x ?? y
La syntaxe est maintenant à l'état de proposition d'étape 1. annuler la coalescence4 votes
Il existe désormais un Plugin Babel qui reprend cette syntaxe exacte.
11 votes
Note de 2019 : c'est maintenant le statut de stade 3 !
2 votes
Note de plus tard en 2019 : Nullish coalescing est disponible dans TypeScript 3.7 !
5 votes
Note à partir de janvier 2020 : L'opérateur de coalescence nulle est disponible en natif dans Firefox 72 mais l'opérateur de chaînage optionnel ne l'est toujours pas.
6 votes
L'opérateur de coalescence nul (
x ?? y
) et l'opérateur de chaînage facultatif (user.address?.street
) sont maintenant tous deux au stade 4. Voici une bonne description de ce que cela signifie : 2ality.com/2015/11/tc39-processus.html#stage-4%3A-fini .