Skip to content

Commit 7cea7f6

Browse files
authored
Merge pull request #286 from HachemiH/master
Conflicts fixed after sync with upstream @ 7533c71
2 parents 420721f + eed74a6 commit 7cea7f6

File tree

16 files changed

+43
-196
lines changed

16 files changed

+43
-196
lines changed

1-js/01-getting-started/2-manuals-specifications/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@ Une nouvelle version de la spécification est publiée chaque année. La derniè
1212

1313
Pour en savoir plus sur les fonctionnalités à venir, y compris celles qui sont "presque standards" (appelées aussi "stage 3"), vous pouvez consulter les propositions à cette adresse : <https://github.com/tc39/proposals>.
1414

15-
<<<<<<< HEAD
16-
Si vous développez spécifiquement pour le navigateur, il existe d’autres spécifications couvertes dans la [seconde partie](info:browser-environment) du tutoriel.
17-
=======
18-
Also, if you're developing for the browser, then there are other specifications covered in the [second part](info:browser-environment) of the tutorial.
19-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
15+
De plus, si vous développez pour le navigateur, d'autres spécifications sont couvertes dans la [seconde partie](info:browser-environment) du tutoriel.
2016

2117
## Manuels
2218

1-js/02-first-steps/08-operators/3-primitive-conversions-questions/solution.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,8 @@ true + false = 1
99
"$" + 4 + 5 = "$45"
1010
"4" - 2 = 2
1111
"4px" - 2 = NaN
12-
<<<<<<< HEAD
13-
7 / 0 = Infinity
14-
" -9 " + 5 = " -9 5" // (3)
15-
" -9 " - 5 = -14 // (4)
16-
=======
1712
" -9 " + 5 = " -9 5" // (3)
1813
" -9 " - 5 = -14 // (4)
19-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
2014
null + 1 = 1 // (5)
2115
undefined + 1 = NaN // (6)
2216
" \t \n" - 2 = -2 // (7)

1-js/02-first-steps/08-operators/3-primitive-conversions-questions/task.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,8 @@ true + false
1616
"$" + 4 + 5
1717
"4" - 2
1818
"4px" - 2
19-
<<<<<<< HEAD
20-
7 / 0
21-
" -9\n" + 5
22-
" -9\n" - 5
23-
=======
2419
" -9 " + 5
2520
" -9 " - 5
26-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
2721
null + 1
2822
undefined + 1
2923
" \t \n" - 2

1-js/02-first-steps/10-ifelse/2-check-standard/task.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@ importance: 2
66

77
En utilisant la construction `if..else`, écrivez le code qui demande : 'Quel est le nom "officiel" de JavaScript?'
88

9-
<<<<<<< HEAD
10-
Si le visiteur entre “ECMAScript”, alors éditez “Bonne réponse !”, Sinon -- retourne “Ne sait pas ? ECMAScript!"
11-
=======
12-
If the visitor enters "ECMAScript", then output "Right!", otherwise -- output: "You don't know? ECMAScript!"
13-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
9+
Si le visiteur entre "ECMAScript", alors éditez une sortie "Bonne réponse !", Sinon -- retourne "Ne sait pas ? ECMAScript!"
1410

1511
![](ifelse_task2.svg)
1612

1-js/02-first-steps/11-logical-operators/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
# Opérateurs logiques
22

3-
<<<<<<< HEAD
4-
Il y a trois opérateurs logiques en JavaScript : `||` (OR), `&&` (AND), `!` (NOT).
5-
=======
6-
There are four logical operators in JavaScript: `||` (OR), `&&` (AND), `!` (NOT), `??` (Nullish Coalescing). Here we cover the first three, the `??` operator is in the next article.
7-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
3+
Il y a trois opérateurs logiques en JavaScript : `||` (OR), `&&` (AND), `!` (NOT), `??` (Coalescence des nulles). Nous couvrons ici les trois premiers, l'opérateur `??` est dans l'article suivant.
84

95
Bien qu'ils soient appelés "logiques", ils peuvent être appliqués à des valeurs de tout type, pas seulement booléennes. Le résultat peut également être de tout type.
106

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

Lines changed: 13 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,17 @@
22

33
[recent browser="new"]
44

5-
<<<<<<< HEAD
6-
Ici, dans cet article, nous dirons qu'une expression est `defined` lorsqu'elle n'est ni `null` ni `undefined`.
75

86
L'opérateur de coalescence des nuls est écrit sous la forme de deux points d'interrogation `??`.
97

8+
Comme il traite `null` et `undefined` de la même manière, nous utiliserons un terme spécial ici, dans cet article. Nous dirons qu'une expression est "définie" lorsqu'elle n'est ni `null` ni `undefined`.
9+
1010
Le résultat de `a ?? b` est :
1111
- si `a` est défini, alors `a`,
1212
- si `a` n'est pas défini, alors `b`.
1313

1414

1515
En d'autres termes, `??` renvoie le premier argument s'il n'est pas `nul/undefined`. Sinon, le second.
16-
=======
17-
The nullish coalescing operator is written as two question marks `??`.
18-
19-
As it treats `null` and `undefined` similarly, we'll use a special term here, in this article. We'll say that an expression is "defined" when it's neither `null` nor `undefined`.
20-
21-
The result of `a ?? b` is:
22-
- if `a` is defined, then `a`,
23-
- if `a` isn't defined, then `b`.
24-
25-
In other words, `??` returns the first argument if it's not `null/undefined`. Otherwise, the second one.
26-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
2716

2817
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.
2918

@@ -33,29 +22,19 @@ Nous pouvons réécrire `result = a ?? b` en utilisant les opérateurs que nous
3322
result = (a !== null && a !== undefined) ? a : b;
3423
```
3524

36-
<<<<<<< HEAD
37-
Le cas d'utilisation courant de `??` est de fournir une valeur par défaut pour une variable potentiellement indéfinie.
38-
39-
Par exemple, ici nous montrons `Anonymous` si `user` n'est pas défini :
40-
=======
41-
Now it should be absolutely clear what `??` does. Let's see where it helps.
25+
Maintenant, il devrait être absolument clair ce que fait `??`. Voyons où cela aide.
4226

43-
The common use case for `??` is to provide a default value for a potentially undefined variable.
27+
Le cas d'utilisation courant de `??` est de fournir une valeur par défaut pour une variable potentiellement indéfinie.
4428

45-
For example, here we show `user` if defined, otherwise `Anonymous`:
46-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
29+
Par exemple, ici nous affichons `user` s'il est défini, sinon `Anonymous` :
4730

4831
```js run
4932
let user;
5033

5134
alert(user ?? "Anonymous"); // Anonymous (user not defined)
5235
```
5336
54-
<<<<<<< HEAD
55-
Bien sûr, si `user` avait une valeur à l'exception de `null/undefined`, alors nous la verrions à la place :
56-
=======
57-
Here's the example with `user` assigned to a name:
58-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
37+
Voici l'exemple avec `user` attribué à un nom :
5938
6039
```js run
6140
let user = "John";
@@ -65,15 +44,9 @@ alert(user ?? "Anonymous"); // John (user defined)
6544
6645
Nous pouvons également utiliser une séquence de `??` pour sélectionner la première valeur dans une liste qui n'est pas `null/undefined`.
6746
68-
<<<<<<< HEAD
6947
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 valeur.
7048
7149
Nous aimerions afficher le nom d'utilisateur en utilisant l'une de ces variables, ou afficher "Anonymous" si toutes ne sont pas définies.
72-
=======
73-
Let's say we have a user's data in variables `firstName`, `lastName` or `nickName`. All of them may be not defined, if the user decided not to enter a value.
74-
75-
We'd like to display the user name using one of these variables, or show "Anonymous" if all of them aren't defined.
76-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
7750
7851
Utilisons l'opérateur `??` pour cela :
7952
@@ -104,11 +77,7 @@ alert(firstName || lastName || nickName || "Anonymous"); // Supercoder
10477
*/!*
10578
```
10679
107-
<<<<<<< HEAD
108-
L'opérateur OR `||` existe depuis le début de JavaScript, donc les développeurs l'utilisaient à de telles fins depuis longtemps.
109-
=======
110-
Historically, the OR `||` operator was there first. It exists since the beginning of JavaScript, so developers were using it for such purposes for a long time.
111-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
80+
Historiquement, l'opérateur OR `||` était là en premier. Il existe depuis le début de JavaScript, donc les développeurs l'utilisaient à de telles fins depuis longtemps.
11281
11382
D'un autre côté, l'opérateur de coalescence des nuls `??` n'a été ajouté à JavaScript que récemment, et la raison en était que les gens n'étaient pas tout à fait satisfaits de `||`.
11483
@@ -129,33 +98,18 @@ alert(height || 100); // 100
12998
alert(height ?? 100); // 0
13099
```
131100
132-
<<<<<<< HEAD
133-
- L'expression `height || 100` vérifie que "height" est une valeur erronée, et c'est vraiment le cas,
134-
- donc le résultat est le deuxième argument, `100`.
101+
- L'expression `height || 100` vérifie que `height` est une valeur fausse, et c'est `0`, elle est fausse en effet.
102+
- donc le résultat de `||` est le deuxième argument, `100`.
135103
- L'expression `height ?? 100` vérifie que `height` est `null/undefined`, et ce n'est pas le cas,
136104
- donc le résultat est `height` "tel quel", c'est-à-dire `0`.
137105
138-
Si la hauteur zéro est une valeur valide, elle ne doit pas être remplacée par la valeur par défaut, alors `??` fait exactement ce qu'il faut.
106+
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.
139107
140108
## Priorité
141-
=======
142-
- The `height || 100` checks `height` for being a falsy value, and it's `0`, falsy indeed.
143-
- so the result of `||` is the second argument, `100`.
144-
- The `height ?? 100` checks `height` for being `null/undefined`, and it's not,
145-
- so the result is `height` "as is", that is `0`.
146-
147-
In practice, the zero height is often a valid value, that shouldn't be replaced with the default. So `??` does just the right thing.
148-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
149-
150-
La priorité de l'opérateur `??` est plutôt faible : `5` dans le [tableau MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table).
151109
152-
<<<<<<< HEAD
153-
La priorité de l'opérateur «??» est plutôt faible: «5» dans le [tableau MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table). Ainsi, `??` est évalué avant `=` et `?`, Mais après la plupart des autres opérations, telles que `+`, `*`.
154-
=======
155-
The precedence of the `??` operator is about the same as `||`, just a bit lower. It equals `5` in the [MDN table](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table), while `||` is `6`.
110+
La priorité de l'opérateur `??` est à peu près la même que celle de `||`, juste un peu plus basse. Il est égal à `5` dans le [tableau MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table), tandis que `||` est `6`.
156111
157-
That means that, just like `||`, the nullish coalescing operator `??` is evaluated before `=` and `?`, but after most other operations, such as `+`, `*`.
158-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
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 `+`, `*`.
159113
160114
Donc, si nous voulons choisir une valeur avec `??` dans une expression avec d'autres opérateurs, pensez à ajouter des parenthèses :
161115
@@ -189,11 +143,7 @@ Le code ci-dessous déclenche une erreur de syntaxe :
189143
let x = 1 && 2 ?? 3; // Syntax error
190144
```
191145
192-
<<<<<<< HEAD
193-
La limitation est sûrement discutable, mais elle a été ajoutée à la spécification du langage dans le but d'éviter les erreurs de programmation, car les gens commencent à passer à `??` à partir de `||`.
194-
=======
195-
The limitation is surely debatable, it was added to the language specification with the purpose to avoid programming mistakes, when people start to switch from `||` to `??`.
196-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
146+
La limitation est sûrement discutable, mais elle a été ajoutée à la spécification du langage dans le but d'éviter les erreurs de programmation, quand les gens commencent à passer de `||` à `??`.
197147
198148
Utilisez des parenthèses explicites pour la contourner :
199149

1-js/04-object-basics/02-object-copy/article.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -187,13 +187,9 @@ let clone = Object.assign({}, user);
187187
188188
Cela copie toutes les propriétés de `user` dans l'objet vide et le retourne.
189189
190-
<<<<<<< HEAD
191-
## Clonage imbriqué
192-
=======
193-
There are also other methods of cloning an object, e.g. using the [spread operator](info:rest-parameters-spread) `clone = {...user}`, covered later in the tutorial.
190+
Il existe également d'autres méthodes de clonage d'un objet, par ex. en utilisant la [syntaxe spread](info:rest-parameters-spread) `clone = {...user}`, abordé plus loin dans le tutoriel.
194191
195-
## Nested cloning
196-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
192+
## Clonage imbriqué
197193
198194
Jusqu'à maintenat on suppose que toutes les propriétés de `use` sont des primitives. Mais les propriétés peuvent être des références vers d'autres objets. Comment gèrer ces cas-là ?
199195

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -175,15 +175,10 @@ userGuest.admin?.(); // nothing (no such method)
175175
*/!*
176176
```
177177

178-
<<<<<<< HEAD
179178

180-
Ici, dans les deux lignes, nous utilisons d'abord le point (`user1.admin`) pour obtenir la propriété `admin`, car l'objet utilisateur doit exister, donc il peut être lu en toute sécurité.
181-
Puis `?.()` Vérifie la partie gauche : si la fonction admin existe, alors elle s'exécute (c'est le cas pour `user1`). Sinon (pour `user2`) l'évaluation s'arrête sans erreur.
182-
=======
183-
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.
179+
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é.
184180

185-
Then `?.()` checks the left part: if the admin function exists, then it runs (that's so for `userAdmin`). Otherwise (for `userGuest`) the evaluation stops without errors.
186-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
181+
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.
187182

188183

189184
La syntaxe `?.[]` Fonctionne également, si nous voulons utiliser des crochets `[]` pour accéder aux propriétés au lieu du point `.`. Similaire aux cas précédents, il permet de lire en toute sécurité une propriété à partir d'un objet qui peut ne pas exister.

1-js/05-data-types/10-destructuring-assignment/article.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,7 @@ Nous pouvons échanger plus de deux variables de cette façon.
155155
156156
### Le rest '...'
157157
158-
<<<<<<< HEAD
159-
Habituellement, si le tableau est plus long lorsque la liste est à gauche, les éléments "supplémentaires" sont omis.
160-
=======
161-
Usually, if the array is longer than the list at the left, the "extra" items are omitted.
162-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
158+
Habituellement, si le tableau est plus long que la liste à gauche, les éléments "supplémentaires" sont omis.
163159
164160
Par exemple, ici, seuls deux éléments sont pris et le reste est simplement ignoré :
165161

1-js/06-advanced-functions/02-rest-parameters-spread/article.md

Lines changed: 6 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -224,28 +224,19 @@ Mais il existe une différence subtile entre `Array.from(obj)` et `[...obj]` :
224224
Donc, pour transformer quelque chose en tableau, `Array.from` tend à être plus universel.
225225
226226
227-
<<<<<<< HEAD
228-
## Obtenez une nouvelle copie d'un tableau/objet
229-
=======
230-
## Copy an array/object
231-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
227+
## Copier un tableau/objet
232228
233229
Souvenez-vous quand nous avons parlé de `Object.assign()` [par le passé](info:object-copy#cloning-and-merging-object-assign) ?
234230
235231
Il est possible de faire la même chose avec la syntaxe spread !
236232
237233
```js run
238234
let arr = [1, 2, 3];
239-
<<<<<<< HEAD
240-
let arrCopy = [...arr]; // répartir le tableau dans une liste de paramètres
241-
// puis mettre le résultat dans un nouveau tableau
242-
=======
243235
244236
*!*
245-
let arrCopy = [...arr]; // spread the array into a list of parameters
246-
// then put the result into a new array
237+
let arrCopy = [...arr]; // répartir le tableau dans une liste de paramètres
238+
// puis mettre le résultat dans un nouveau tableau
247239
*/!*
248-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
249240
250241
// les tableaux ont-ils le même contenu ?
251242
alert(JSON.stringify(arr) === JSON.stringify(arrCopy)); // true
@@ -263,16 +254,11 @@ Notez qu'il est possible de faire la même chose pour faire une copie d'un objet
263254
264255
```js run
265256
let obj = { a: 1, b: 2, c: 3 };
266-
<<<<<<< HEAD
267-
let objCopy = { ...obj }; // répartir l'objet dans une liste de paramètres
268-
// puis retourne le résultat dans un nouvel objet
269-
=======
270257
271258
*!*
272-
let objCopy = { ...obj }; // spread the object into a list of parameters
273-
// then return the result in a new object
259+
let objCopy = { ...obj }; // répartir l'objet dans une liste de paramètres
260+
// puis retourne le résultat dans un nouvel objet
274261
*/!*
275-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
276262
277263
// les objets ont-ils le même contenu ?
278264
alert(JSON.stringify(obj) === JSON.stringify(objCopy)); // true
@@ -286,11 +272,7 @@ alert(JSON.stringify(obj)); // {"a":1,"b":2,"c":3,"d":4}
286272
alert(JSON.stringify(objCopy)); // {"a":1,"b":2,"c":3}
287273
```
288274
289-
<<<<<<< HEAD
290-
Cette façon de copier un objet est beaucoup plus courte que `let objCopy = Object.assign({}, obj);` ou pous un tableau `let arrCopy = Object.assign([], arr);` nous préférons donc l'utiliser chaque fois que nous le pouvons.
291-
=======
292-
This way of copying an object is much shorter than `let objCopy = Object.assign({}, obj)` or for an array `let arrCopy = Object.assign([], arr)` so we prefer to use it whenever we can.
293-
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
275+
Cette façon de copier un objet est beaucoup plus courte que `let objCopy = Object.assign({}, obj)` ou pour un tableau `let arrCopy = Object.assign([], arr);` nous préférons donc l'utiliser chaque fois que nous le pouvons.
294276
295277
296278
## Résumé

0 commit comments

Comments
 (0)