Skip to content

Commit fd0e669

Browse files
Apply various minor fixes in js/02-first-steps/12-nullish-coalescing-operator
1 parent d9d1636 commit fd0e669

File tree

1 file changed

+15
-16
lines changed
  • 1-js/02-first-steps/12-nullish-coalescing-operator

1 file changed

+15
-16
lines changed

1-js/02-first-steps/12-nullish-coalescing-operator/article.md

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
[recent browser="new"]
44

5-
65
L'opérateur de coalescence des nuls est écrit sous la forme de deux points d'interrogation `??`.
76

87
Comme il traite `null` et `undefined` de la même manière, nous utiliserons un terme spécial ici, dans cet article. Par souci de brièveté, nous dirons qu'une expression est "définie" lorsqu'elle n'est ni `null` ni `undefined`.
@@ -11,8 +10,7 @@ Le résultat de `a ?? b` est :
1110
- si `a` est défini, alors `a`,
1211
- si `a` n'est pas défini, alors `b`.
1312

14-
15-
En d'autres termes, `??` renvoie le premier argument s'il n'est pas `null/undefined`. Sinon, le second.
13+
En d'autres termes, `??` renvoie le premier argument s'il n'est pas `null`/`undefined`. Sinon, le second.
1614

1715
L'opérateur de coalescence des nuls n'est pas complètement nouveau. C'est juste une belle syntaxe pour obtenir la première valeur "defined" des deux.
1816

@@ -24,9 +22,9 @@ result = (a !== null && a !== undefined) ? a : b;
2422

2523
Maintenant, il devrait être absolument clair ce que fait `??`. Voyons où cela aide.
2624

27-
Le cas d'utilisation courant de `??` est de fournir une valeur par défaut.
25+
Le cas d'utilisation courant de `??` est de fournir une valeur par défaut.
2826

29-
Par exemple, nous affichons ici `user` si sa valeur n'est pas `null/undefined`, sinon `Anonymous` :
27+
Par exemple, nous affichons ici `user` si sa valeur n'est pas `null`/`undefined`, sinon `Anonymous` :
3028

3129
```js run
3230
let user;
@@ -42,11 +40,11 @@ let user = "John";
4240
alert(user ?? "Anonymous"); // John (user is not null/udefined)
4341
```
4442
45-
Nous pouvons également utiliser une séquence de `??` pour sélectionner la première valeur dans une liste qui n'est pas `null/undefined`.
43+
Nous pouvons également utiliser une séquence de `??` pour sélectionner la première valeur dans une liste qui n'est pas `null`/`undefined`.
4644
4745
Disons que nous avons les données d'un utilisateur dans les variables `firstName`, `lastName` ou `nickName`. Tous peuvent être indéfinis, si l'utilisateur décide de ne pas entrer de valeurs correspondantes.
4846
49-
Nous aimerions afficher le nom d'utilisateur à l'aide de l'une de ces variables, ou afficher "Anonyme" si toutes sont `null/undefined`.
47+
Nous aimerions afficher le nom d'utilisateur à l'aide de l'une de ces variables, ou afficher "Anonyme" si toutes sont `null`/`undefined`.
5048
5149
Utilisons l'opérateur `??` pour cela :
5250
@@ -55,9 +53,10 @@ let firstName = null;
5553
let lastName = null;
5654
let nickName = "Supercoder";
5755

58-
// affiche la première valeur définie:
56+
// affiche la première valeur définie :
5957
*!*
6058
alert(firstName ?? lastName ?? nickName ?? "Anonymous"); // Supercoder
59+
*/!*
6160
```
6261
6362
## Comparaison avec ||
@@ -71,7 +70,7 @@ let firstName = null;
7170
let lastName = null;
7271
let nickName = "Supercoder";
7372

74-
// shows the first truthy value:
73+
// affiche la première valeur vraie :
7574
*!*
7675
alert(firstName || lastName || nickName || "Anonymous"); // Supercoder
7776
*/!*
@@ -85,9 +84,9 @@ La différence importante entre eux est que :
8584
- `||` renvoie la première valeur *vraie*.
8685
- `??` renvoie la première valeur *définie*.
8786
88-
En d'autres termes, `||` ne fait pas la distinction entre `false`, `0`, une chaîne vide `" "` et `null/undefined`. Ce sont tous les mêmes -- des valeurs fausses. Si l'un de ceux-ci est le premier argument de `||`, alors nous obtiendrons le deuxième argument comme résultat.
87+
En d'autres termes, `||` ne fait pas la distinction entre `false`, `0`, une chaîne vide `" "` et `null`/`undefined`. Ce sont tous les mêmes -- des valeurs fausses. Si l'un de ceux-ci est le premier argument de `||`, alors nous obtiendrons le deuxième argument comme résultat.
8988
90-
Dans la pratique cependant, nous pouvons vouloir utiliser la valeur par défaut uniquement lorsque la variable est `null/undefined`. Autrement dit, lorsque la valeur est vraiment inconnue/non définie.
89+
Dans la pratique cependant, nous pouvons vouloir utiliser la valeur par défaut uniquement lorsque la variable est `null`/`undefined`. Autrement dit, lorsque la valeur est vraiment inconnue/non définie.
9190
9291
Par exemple, considérez ceci :
9392
@@ -100,7 +99,7 @@ alert(height ?? 100); // 0
10099
101100
- L'expression `height || 100` vérifie que `height` est une valeur fausse, et c'est `0`, elle est fausse en effet.
102101
- donc le résultat de `||` est le deuxième argument, `100`.
103-
- L'expression `height ?? 100` vérifie que `height` est `null/undefined`, et ce n'est pas le cas,
102+
- L'expression `height ?? 100` vérifie que `height` est `null`/`undefined`, et ce n'est pas le cas,
104103
- donc le résultat est `height` "tel quel", c'est-à-dire `0`.
105104
106105
En pratique, la hauteur zéro est souvent une valeur valide, qui ne doit pas être remplacée par la valeur par défaut. Alors `??` fait ce qu'il faut.
@@ -109,7 +108,7 @@ En pratique, la hauteur zéro est souvent une valeur valide, qui ne doit pas êt
109108
110109
La priorité de l'opérateur `??` est la même que celle de `||`. Elle est égale à `3` dans le [tableau MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
111110
112-
Cela signifie que, tout comme `||`, l'opérateur de coalescence des nuls `??` est évalué avant `=` et `?`, Mais après la plupart des autres opérations, telles que `+`, `*`.
111+
Cela signifie que, tout comme `||`, l'opérateur de coalescence des nuls `??` est évalué avant `=` et `?`, mais après la plupart des autres opérations, telles que `+`, `*`.
113112
114113
Nous devrons donc peut-être ajouter des parenthèses dans des expressions comme celle-ci :
115114
@@ -123,13 +122,13 @@ let area = (height ?? 100) * (width ?? 50);
123122
alert(area); // 5000
124123
```
125124
126-
Sinon, si nous omettons les parenthèses, alors que `*` a la priorité la plus élevée que `??`, il s'exécuterait en premier, conduisant à des résultats incorrects.
125+
Sinon, si nous omettons les parenthèses, alors que `*` a une priorité plus élevée que `??`, il s'exécuterait en premier, conduisant à des résultats incorrects.
127126
128127
```js
129128
// sans parenthèses
130129
let area = height ?? 100 * width ?? 50;
131130

132-
// ...fonctionne de cette façon (pas ce que nous voulons) :
131+
// ...fonctionne de cette façon (pas ce que nous voulons) :
133132
let area = height ?? (100 * width) ?? 50;
134133
```
135134
@@ -162,7 +161,7 @@ alert(x); // 2
162161
Il est utilisé pour attribuer des valeurs par défaut aux variables :
163162
164163
```js
165-
// configurer height=100, si height est null ou undefined
164+
// configurer height = 100, si height est null ou undefined
166165
height = height ?? 100;
167166
```
168167

0 commit comments

Comments
 (0)