Théorie et différences entre && ; et ? #
Le chaînage optionnel est une syntaxe soignée qui nous permet de court-circuiter une expression
si nous rencontrons un null
ou undefined
valeur.
Vous avez probablement écrit du code comme :
const employeeName = employee && employee.name;
Nous vérifions simplement si le employee
est truthy
Si c’est le cas, nous
accédons à son name
propriété.
Donc si l’employé est une valeur véridique, comme une valeur non vide. string
, un object
,
array
etc., nous attribuerions la valeur name
à la propriété employeeName
variable.
Si l’employé est un falsy
valeur – comme null
, undefined
, 0
, ''
etc – puis
employeeName
se verrait attribuer la valeur falsy et la partie après employee
ne serait pas évaluée.
En typographie, on pourrait faire :
const employeeName = employee?.name;
Dans le cas de l’écriture typographique, nous disons que si l’employé n’est pas null
ou undefined
accéder à sa propriété name et affecter sa valeur à la propriété employeeName
variable.
Dans le cas où l’employé est null
ou undefined
– arrêter immédiatement l’évaluation et
retourner undefined
.
Vous pouvez voir comment le &&
et ?.
sont légèrement différents.
Dans le cas de &&
nous pourrions obtenir l’un des falsy
retournée par l’expression
dans le cas de ?.
nous ne pouvons obtenir que undefined
si la valeur
précédant l’opérateur est null
ou undefined
.
Aussi le &&
est une vérification plus large qui couvre toutes les falsy
par opposition à
contrairement à ?.
qui ne couvre que null
et undefined
dans la vérification, donc :
&&
– if (falsy) {return falsy}
&&
– if (truthy) {renvoie l’évaluation complète de l’expression}
?.
– if (null || undefined) {renvoie undefined}
let c;
console.log(c?.test);
let d = null;
console.log(d?.test);
?.
– if (falsy && ; !(null || undefined)) {renvoie l’évaluation complète de l’expression
l’expression}
const e = '';
console.log(e?.concat('hello'));
?.
– if (truthy) {renvoyer l’évaluation complète de l’expression}
console.log('hello'?.toUpperCase());
Si isArray ou string – accède à l’élément à l’index – sinon retourne undefined. #
Récupérer le premier élément du tableau si on a un tableau, sinon retourner
indéfini :
Avec un tableau valide :
const arr1 = ['hello'];
console.log(arr1?.[0]);
Sans tableau valide :
const notarr1 = '';
console.log(notarr1?.[0]);
Avec une chaîne de caractères véridique :
const notarr2 = 'hello';
console.log(notarr2?.[0]);
Avec une valeur booléenne vraie :
const notarr3 = true;
console.log(notarr3?.[0]);
Appeler l’expression si elle n’est pas nulle ou indéfinie #
N’appelez une fonction que si sa valeur n’est pas nulle ou indéfinie :
function maybeLog(logger?: (message: string) => void) {
logger?.('Hello World!');
}
maybeLog();
maybeLog(message => console.log(message));
Fin #
L’élégant ?.
nous aide à court-circuiter une expression si nous rencontrons null
ou
undefined
valeurs. Grâce à une syntaxe très compacte, nous pouvons accéder de manière conditionnelle aux éléments d’un objet ou d’un tableau et appeler des fonctions.
aux éléments d’un objet ou d’un tableau et appeler des fonctions.
A partir du 26 février 2021, la version ?.
est soutenu par environ
85.66% des navigateurs –
caniuse.com.