Skip to content

Commit 420721f

Browse files
authored
Merge pull request #285 from javascript-tutorial/sync-7533c719
Sync with upstream @ 7533c71
2 parents 705a36d + 61db7ba commit 420721f

File tree

20 files changed

+179
-8
lines changed

20 files changed

+179
-8
lines changed

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ 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
1516
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
1620
1721
## Manuels
1822

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ true + false = 1
99
"$" + 4 + 5 = "$45"
1010
"4" - 2 = 2
1111
"4px" - 2 = NaN
12+
<<<<<<< HEAD
1213
7 / 0 = Infinity
1314
" -9 " + 5 = " -9 5" // (3)
1415
" -9 " - 5 = -14 // (4)
16+
=======
17+
" -9 " + 5 = " -9 5" // (3)
18+
" -9 " - 5 = -14 // (4)
19+
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
1520
null + 1 = 1 // (5)
1621
undefined + 1 = NaN // (6)
1722
" \t \n" - 2 = -2 // (7)

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,14 @@ true + false
1616
"$" + 4 + 5
1717
"4" - 2
1818
"4px" - 2
19+
<<<<<<< HEAD
1920
7 / 0
2021
" -9\n" + 5
2122
" -9\n" - 5
23+
=======
24+
" -9 " + 5
25+
" -9 " - 5
26+
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
2227
null + 1
2328
undefined + 1
2429
" \t \n" - 2

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ 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
910
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
1014
1115
![](ifelse_task2.svg)
1216

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

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

3+
<<<<<<< HEAD
34
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
48
59
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.
610

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

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

33
[recent browser="new"]
44

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

78
L'opérateur de coalescence des nuls est écrit sous la forme de deux points d'interrogation `??`.
@@ -12,6 +13,17 @@ Le résultat de `a ?? b` est :
1213

1314

1415
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
1527
1628
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.
1729

@@ -21,29 +33,47 @@ Nous pouvons réécrire `result = a ?? b` en utilisant les opérateurs que nous
2133
result = (a !== null && a !== undefined) ? a : b;
2234
```
2335

36+
<<<<<<< HEAD
2437
Le cas d'utilisation courant de `??` est de fournir une valeur par défaut pour une variable potentiellement indéfinie.
2538

2639
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.
42+
43+
The common use case for `??` is to provide a default value for a potentially undefined variable.
44+
45+
For example, here we show `user` if defined, otherwise `Anonymous`:
46+
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
2747
2848
```js run
2949
let user;
3050

31-
alert(user ?? "Anonymous"); // Anonymous
51+
alert(user ?? "Anonymous"); // Anonymous (user not defined)
3252
```
3353
54+
<<<<<<< HEAD
3455
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
3559
3660
```js run
3761
let user = "John";
3862

39-
alert(user ?? "Anonymous"); // John
63+
alert(user ?? "Anonymous"); // John (user defined)
4064
```
4165
4266
Nous pouvons également utiliser une séquence de `??` pour sélectionner la première valeur dans une liste qui n'est pas `null/undefined`.
4367
68+
<<<<<<< HEAD
4469
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.
4570
4671
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
4777
4878
Utilisons l'opérateur `??` pour cela :
4979
@@ -74,7 +104,11 @@ alert(firstName || lastName || nickName || "Anonymous"); // Supercoder
74104
*/!*
75105
```
76106
107+
<<<<<<< HEAD
77108
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
78112
79113
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 `||`.
80114
@@ -95,6 +129,7 @@ alert(height || 100); // 100
95129
alert(height ?? 100); // 0
96130
```
97131
132+
<<<<<<< HEAD
98133
- L'expression `height || 100` vérifie que "height" est une valeur erronée, et c'est vraiment le cas,
99134
- donc le résultat est le deuxième argument, `100`.
100135
- L'expression `height ?? 100` vérifie que `height` est `null/undefined`, et ce n'est pas le cas,
@@ -103,10 +138,24 @@ alert(height ?? 100); // 0
103138
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.
104139
105140
## 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
106149
107150
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).
108151
152+
<<<<<<< HEAD
109153
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`.
156+
157+
That means that, just like `||`, the nullish coalescing operator `??` is evaluated before `=` and `?`, but after most other operations, such as `+`, `*`.
158+
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
110159
111160
Donc, si nous voulons choisir une valeur avec `??` dans une expression avec d'autres opérateurs, pensez à ajouter des parenthèses :
112161
@@ -140,7 +189,11 @@ Le code ci-dessous déclenche une erreur de syntaxe :
140189
let x = 1 && 2 ?? 3; // Syntax error
141190
```
142191
192+
<<<<<<< HEAD
143193
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
144197
145198
Utilisez des parenthèses explicites pour la contourner :
146199

1-js/02-first-steps/17-arrow-functions-basics/article.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ Il existe une syntaxe plus simple et concise pour créer des fonctions, c'est so
55
Les "fonctions fléchées" sont appelées ainsi pour leur syntaxe :
66

77
```js
8-
let func = (arg1, arg2, ...argN) => expression
8+
let func = (arg1, arg2, ..., argN) => expression
99
```
1010

1111
...Cela va créér une function `func` qui accepte les arguments `arg1...argN`, puis évalue l'`expression` sur le côté droit et retourne le résultat.
1212

1313
C'est donc la version raccourcie de :
1414

1515
```js
16-
let func = function(arg1, arg2, ...argN) {
16+
let func = function(arg1, arg2, ..., argN) {
1717
return expression;
1818
};
1919
```

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,13 @@ 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
190191
## 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.
194+
195+
## Nested cloning
196+
>>>>>>> 7533c719fbf62ba57188d6d51fe4c038b282bd0c
191197
192198
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à ?
193199

1-js/04-object-basics/04-object-methods/8-chain-calls/solution.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ let ladder = {
2121
return this;
2222
*/!*
2323
}
24-
}
24+
};
2525

2626
ladder.up().up().down().up().down().showStep(); // 1
2727
```

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

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

178+
<<<<<<< HEAD
178179

179180
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é.
180181
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.
184+
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
181187

182188

183189
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.

0 commit comments

Comments
 (0)