Skip to content

Commit 14072b7

Browse files
committed
Conflicts fixed on "Optional chaining '?.'" page in french language
1 parent de9c8d4 commit 14072b7

File tree

1 file changed

+15
-66
lines changed
  • 1-js/04-object-basics/07-optional-chaining

1 file changed

+15
-66
lines changed

1-js/04-object-basics/07-optional-chaining/article.md

Lines changed: 15 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,7 @@ Dans de nombreux cas pratiques, nous préférerions obtenir `undefined` au lieu
3737
let html = document.querySelector('.elem').innerHTML; // error if it's null
3838
```
3939

40-
<<<<<<< HEAD
41-
Encore une fois, si l'élément n'existe pas, nous obtiendrons une erreur lors de l'accès à `.innerHTML` de` null`. Et dans certains cas, lorsque l'absence de l'élément est normale, nous aimerions éviter l'erreur et accepter simplement `html = null` comme résultat.
42-
=======
43-
Once again, if the element doesn't exist, we'll get an error accessing `.innerHTML` property of `null`. And in some cases, when the absence of the element is normal, we'd like to avoid the error and just accept `html = null` as the result.
44-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
40+
Encore une fois, si l'élément n'existe pas, nous obtiendrons une erreur lors de l'accès à la propriété `.innerHTML` de` null`. Et dans certains cas, lorsque l'absence de l'élément est normale, nous aimerions éviter l'erreur et accepter simplement `html = null` comme résultat.
4541

4642
Comment peut-on le faire ?
4743

@@ -53,27 +49,20 @@ let user = {};
5349
alert(user.address ? user.address.street : undefined);
5450
```
5551

56-
<<<<<<< HEAD
57-
Cela fonctionne, il n'y a pas d'erreur ... Mais c'est assez inélégant. Comme vous pouvez le voir, `"user.address"` apparaît deux fois dans le code. Pour des propriétés plus profondément imbriquées, cela devient un problème car plus de répétitions sont nécessaires.
52+
Cela fonctionne, il n'y a pas d'erreur ... Mais c'est assez inélégant. Comme vous pouvez le voir, `"user.address"` apparaît deux fois dans le code.
5853

59-
Par exemple. essayons d'obtenir `user.address.street.name`.
6054

61-
Nous devons vérifier à la fois `user.address` et `user.address.street` :
62-
=======
63-
It works, there's no error... But it's quite inelegant. As you can see, the `"user.address"` appears twice in the code.
64-
65-
Here's how the same would look for `document.querySelector`:
55+
Voici à quoi ressemblerait la même chose pour `document.querySelector` :
6656

6757
```js run
6858
let html = document.querySelector('.elem') ? document.querySelector('.elem').innerHTML : null;
6959
```
7060

71-
We can see that the element search `document.querySelector('.elem')` is actually called twice here. Not good.
61+
Nous pouvons voir que l'élément de recherche `document.querySelector('.elem')` est en fait appelé deux fois ici. Pas bon.
7262

73-
For more deeply nested properties, it becomes even uglier, as more repetitions are required.
63+
Pour les propriétés plus profondément imbriquées, cela devient encore plus laid, car davantage de répétitions sont nécessaires.
7464

75-
E.g. let's get `user.address.street.name` in a similar fashion.
76-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
65+
Par exemple. récupérons `user.address.street.name` de la même manière.
7766

7867
```js
7968
let user = {}; // l'utilisateur n'a pas d'adresse
@@ -83,11 +72,7 @@ alert(user.address ? user.address.street ? user.address.street.name : null : nul
8372

8473
C'est juste horrible, on peut même avoir des problèmes pour comprendre un tel code.
8574

86-
<<<<<<< HEAD
87-
Ne vous en souciez même pas, car il existe une meilleure façon de l'écrire, en utilisant l'opérateur `&&` :
88-
=======
89-
There's a little better way to write it, using the `&&` operator:
90-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
75+
Il existe une meilleure façon de l'écrire, en utilisant l'opérateur `&&` :
9176

9277
```js run
9378
let user = {}; // l'utilisateur n'a pas d'adresse
@@ -122,17 +107,13 @@ alert( user?.address?.street ); // undefined (no error)
122107
123108
Le code est court et propre, il n'y a aucune duplication.
124109
125-
<<<<<<< HEAD
126-
La lecture de l'adresse avec `user?.address` fonctionne même si l'objet `user` n'existe pas :
127-
=======
128-
Here's an example with `document.querySelector`:
110+
Voici un exemple avec `document.querySelector` :
129111
130112
```js run
131113
let html = document.querySelector('.elem')?.innerHTML; // will be null, if there's no element
132114
```
133115
134-
Reading the address with `user?.address` works even if `user` object doesn't exist:
135-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
116+
La lecture de l'adresse avec `user?.address` fonctionne même si l'objet `user` n'existe pas :
136117
137118
```js run
138119
let user = null;
@@ -148,14 +129,9 @@ Par exemple. dans `user?.address.street.name` le `?.` permet à `user` d'être e
148129
```warn header="N'abusez pas du chaînage optionnel"
149130
Nous ne devrions utiliser `?.` que là où il est normal que quelque chose n'existe pas.
150131
151-
<<<<<<< HEAD
152132
Par exemple, si selon notre logique de codage, l'objet `user` doit exister, mais que `address` est facultatif, alors nous devrions écrire `user.address?.street`, mais pas `user?.address?.street`.
153133

154-
=======
155-
For example, if according to our code logic `user` object must exist, but `address` is optional, then we should write `user.address?.street`, but not `user?.address?.street`.
156-
157-
Then, if `user` happens to be undefined, we'll see a programming error about it and fix it. Otherwise, if we overuse `?.`, coding errors can be silenced where not appropriate, and become more difficult to debug.
158-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
134+
Ensuite, si `user` n'est pas défini, nous verrons une erreur de programmation à ce sujet et nous la corrigerons. Sinon, si nous abusons de `?.`, les erreurs de codage peuvent être réduites au silence là où cela n'est pas approprié et devenir plus difficiles à déboguer.
159135
```
160136
161137
````warn header="La variable avant `?.` doit être déclarée"
@@ -173,24 +149,15 @@ La variable doit être déclarée (par exemple `let/const/var user` ou en tant q
173149
Comme il a été dit précédemment, le `?.` arrête immédiatement ("court-circuite") l'évaluation si la partie gauche n'existe pas.
174150

175151

176-
<<<<<<< HEAD
177-
Donc, s'il y a d'autres appels de fonction ou effets secondaires, ils ne se produisent pas :
178-
=======
179-
So, if there are any further function calls or operations to the right of `?.`, they won't be made.
180-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
152+
Ainsi, s'il y a d'autres appels de fonction ou opérations à droite de `?.`, elles ne seront pas effectuées.
181153

182154
Par exemple :
183155

184156
```js run
185157
let user = null;
186158
let x = 0;
187159
188-
<<<<<<< HEAD
189-
=======
190-
user?.sayHi(x++); // no "user", so the execution doesn't reach sayHi call and x++
191-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
192-
193-
user?.sayHi(x++); // pas de "sayHi", donc l'exécution n'atteint pas x++
160+
user?.sayHi(x++); // pas de "user", donc l'exécution n'atteint pas l'appel sayHi et x++
194161
195162
196163
alert(x); // 0, la valeur n'est pas incrémenté
@@ -223,12 +190,7 @@ userGuest.admin?.(); // nothing happens (no such method)
223190
*/!*
224191
```
225192

226-
<<<<<<< HEAD
227-
=======
228-
Here, in both lines we first use the dot (`userAdmin.admin`) to get `admin` property, because we assume that the `user` object exists, so it's safe read from it.
229-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
230-
231-
Ici, dans les deux lignes, nous utilisons d'abord le point (`userAdmin.admin`) pour obtenir la propriété `admin`, car l'objet utilisateur doit exister, donc il peut être lu en toute sécurité.
193+
Ici, dans les deux lignes, nous utilisons d'abord le point (`userAdmin.admin`) pour obtenir la propriété `admin`, car nous supposons que l'objet `user` existe, il peut donc être lu en toute sécurité.
232194

233195
Puis `?.()` Vérifie la partie gauche : si la fonction admin existe, alors elle s'exécute (c'est le cas pour `userAdmin`). Sinon (pour `userGuest`) l'évaluation s'arrête sans erreur.
234196

@@ -264,23 +226,14 @@ For example:
264226
265227
let user = null;
266228
267-
<<<<<<< HEAD
268229
user?.name = "John"; // Erreur, ne fonctionne pas
269-
// car il évalue à undefined = "John"
270-
=======
271-
user?.name = "John"; // Error, doesn't work
272-
// because it evaluates to: undefined = "John"
273-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
230+
// car il évalue : undefined = "John"
274231
```
275232
Ce n'est tout simplement pas si intelligent.
276233

277-
<<<<<<< HEAD
278234
## Résumé
279235

280236
Le chaînage optionnel '?.' A trois formes :
281-
=======
282-
````
283-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
284237

285238
1. `obj?.prop` -- retourne `obj.prop` si `obj` existe, sinon `undefined`.
286239
2. `obj?.[prop]` -- retourne `obj[prop]` si `obj` existe, sinon `undefined`.
@@ -292,8 +245,4 @@ Comme nous pouvons le voir, tous sont simples et simples à utiliser. Le `?.` v
292245
Une chaîne de `?.` permet d'accéder en toute sécurité aux propriétés imbriquées.
293246
294247
295-
<<<<<<< HEAD
296-
Néanmoins, nous devons appliquer `?.` avec soin, uniquement s'il est acceptable que la partie gauche n'existe pas. Pour ne pas nous cacher les erreurs de programmation, si elles se produisent.
297-
=======
298-
Still, we should apply `?.` carefully, only where it's acceptable, according to our code logic, that the left part doesn't exist. So that it won't hide programming errors from us, if they occur.
299-
>>>>>>> 45934debd9bb31376ea5da129e266df5b43e545f
248+
Néanmoins, nous devons appliquer `?.` avec précaution, uniquement là où il est acceptable, selon la logique de notre code, que la partie gauche n'existe pas. Pour qu'il ne nous cache pas les erreurs de programmation, si elles se produisent.

0 commit comments

Comments
 (0)