You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/12-nullish-coalescing-operator/article.md
+15-16Lines changed: 15 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,6 @@
2
2
3
3
[recent browser="new"]
4
4
5
-
6
5
L'opérateur de coalescence des nuls est écrit sous la forme de deux points d'interrogation `??`.
7
6
8
7
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 :
11
10
- si `a` est défini, alors `a`,
12
11
- si `a` n'est pas défini, alors `b`.
13
12
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.
16
14
17
15
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.
18
16
@@ -24,9 +22,9 @@ result = (a !== null && a !== undefined) ? a : b;
24
22
25
23
Maintenant, il devrait être absolument clair ce que fait `??`. Voyons où cela aide.
26
24
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.
28
26
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` :
30
28
31
29
```js run
32
30
let user;
@@ -42,11 +40,11 @@ let user = "John";
42
40
alert(user ??"Anonymous"); // John (user is not null/udefined)
43
41
```
44
42
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`.
46
44
47
45
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.
48
46
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`.
@@ -85,9 +84,9 @@ La différence importante entre eux est que :
85
84
- `||` renvoie la première valeur *vraie*.
86
85
- `??` renvoie la première valeur *définie*.
87
86
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.
89
88
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.
91
90
92
91
Par exemple, considérez ceci :
93
92
@@ -100,7 +99,7 @@ alert(height ?? 100); // 0
100
99
101
100
- L'expression `height ||100` vérifie que `height` est une valeur fausse, et c'est `0`, elle est fausse en effet.
102
101
- 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,
104
103
- donc le résultat est `height` "tel quel", c'est-à-dire `0`.
105
104
106
105
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
109
108
110
109
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).
111
110
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 `+`, `*`.
113
112
114
113
Nous devrons donc peut-être ajouter des parenthèses dans des expressions comme celle-ci :
115
114
@@ -123,13 +122,13 @@ let area = (height ?? 100) * (width ?? 50);
123
122
alert(area); // 5000
124
123
```
125
124
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.
127
126
128
127
```js
129
128
// sans parenthèses
130
129
let area = height ??100* width ??50;
131
130
132
-
// ...fonctionne de cette façon (pas ce que nous voulons) :
131
+
// ...fonctionne de cette façon (pas ce que nous voulons) :
133
132
let area = height ?? (100* width) ??50;
134
133
```
135
134
@@ -162,7 +161,7 @@ alert(x); // 2
162
161
Il est utilisé pour attribuer des valeurs par défaut aux variables :
163
162
164
163
```js
165
-
// configurer height=100, si height est null ou undefined
164
+
// configurer height = 100, si height est null ou undefined
0 commit comments