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/01-getting-started/1-intro/article.md
+6Lines changed: 6 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -27,9 +27,15 @@ Le navigateur a un moteur intégré, parfois il peut être également appelé "l
27
27
28
28
Différents moteurs ont différents "nom de code", par exemple:
29
29
30
+
<<<<<<< HEAD
30
31
-[V8](https://fr.wikipedia.org/wiki/V8_(moteur_JavaScript)) -- dans Chrome et Opera.
31
32
-[SpiderMonkey](https://fr.wikipedia.org/wiki/SpiderMonkey) -- dans Firefox.
32
33
- … Il existe d'autres noms de code comme "Trident", "Chakra" pour différentes version d'Internet Explorer, "ChakraCore" pour Microsoft Edge, "Nitro" ans "SquirrelFish" pour Safari etc.
34
+
=======
35
+
-[V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome and Opera.
36
+
-[SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
37
+
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.
38
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
33
39
34
40
Les termes ci-dessus sont bons à retenir, car ils sont utilisés dans les articles destinés aux développeurs sur Internet. Nous les utiliserons aussi. Par exemple, si "une fonctionnalité X est prise en charge par V8", cela fonctionne probablement dans Chrome et Opera.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/02-structure/article.md
+33-6Lines changed: 33 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,7 +46,11 @@ alert(3 +
46
46
+2);
47
47
```
48
48
49
+
<<<<<<< HEAD
49
50
Le code génère `6`, car JavaScript n'insère pas de point-virgule ici. Il est intuitivement évident que si la ligne se termine par un plus `"+"`, alors c'est une "expression incomplète", aucun point-virgule requis. Et dans ce cas, cela fonctionne comme prévu.
51
+
=======
52
+
The code outputs `6` because JavaScript does not insert semicolons here. It is intuitively obvious that if the line ends with a plus `"+"`, then it is an "incomplete expression", so a semicolon there would be incorrect. And in this case, that works as intended.
53
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
50
54
51
55
**Mais il existe des situations où JavaScript "échoue" à prendre un point-virgule là où il est vraiment nécessaire.**
52
56
@@ -56,40 +60,63 @@ Les erreurs qui surviennent dans de tels cas sont assez difficiles à trouver et
56
60
Si vous êtes curieux de voir un exemple concret d’une telle erreur, vérifiez ce code :
57
61
58
62
```js run
59
-
[1, 2].forEach(alert)
63
+
alert("Hello");
64
+
65
+
[1, 2].forEach(alert);
60
66
```
61
67
68
+
<<<<<<< HEAD
62
69
Pas besoin de penser à la signification des crochets `[]` et `forEach` pour le moment. Nous les étudierons plus tard, pour l'instant, cela n'a pas d'importance. Retenons simplement le résultat: il affiche `1`, puis `2`.
63
70
64
71
Maintenant, ajoutons une `alert` avant le code et **ne le terminons pas** par un point-virgule :
72
+
=======
73
+
No need to think about the meaning of the brackets `[]` and `forEach` yet. We'll study them later. For now, just remember the result of running the code: it shows `Hello`, then `1`, then `2`.
74
+
75
+
Now let's remove the semicolon after the `alert`:
76
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
65
77
66
78
```js run no-beautify
67
-
alert("There will be an error")
79
+
alert("Hello")
68
80
69
-
[1, 2].forEach(alert)
81
+
[1, 2].forEach(alert);
70
82
```
71
83
84
+
<<<<<<< HEAD
72
85
Maintenant, si nous l'exécutons, seul le premier `alert` est affiché, puis nous avons une erreur!
73
86
74
87
Mais tout va bien à nouveau si on ajoute un point-virgule après `alert` :
75
88
```js run
76
89
alert("All fine now");
90
+
=======
91
+
The difference compared to the code above is only one character: the semicolon at the end of the first line is gone.
92
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
77
93
78
-
[1, 2].forEach(alert)
79
-
```
94
+
If we run this code, only the first `Hello` shows (and there's an error, you may need to open the console to see it). There are no numbers any more.
80
95
96
+
<<<<<<< HEAD
81
97
Nous avons maintenant le message `"All fine now"`, puis `1` et `2`.
82
98
83
99
84
100
L'erreur dans la variante sans point-virgule se produit car JavaScript n'implique pas de point-virgule avant les crochets `[...]`.
85
101
86
102
Ainsi, le point-virgule n'étant pas inséré automatiquement, le code du premier exemple est traité comme une seule instruction. C'est comme ça que le moteur le voit :
103
+
=======
104
+
That's because JavaScript does not assume a semicolon before square brackets `[...]`. So, the code in the last example is treated as a single statement.
105
+
106
+
Here's how the engine sees it:
107
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
87
108
88
109
```js run no-beautify
89
-
alert("There will be an error")[1, 2].forEach(alert)
110
+
alert("Hello")[1, 2].forEach(alert);
90
111
```
91
112
113
+
<<<<<<< HEAD
92
114
Mais ce devrait être deux déclarations distinctes, pas une seule. Une telle fusion dans ce cas est tout simplement erronée, d'où l'erreur. Il y a d'autres situations où une telle chose peut se produire.
115
+
=======
116
+
Looks weird, right? Such merging in this case is just wrong. We need to put a semicolon after `alert` for the code to work correctly.
117
+
118
+
This can happen in other situations also.
119
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
93
120
````
94
121
95
122
Il est recommandé de mettre les points-virgules entre les instructions, même si elles sont séparées par des nouvelles lignes. Cette règle est largement adoptée par la communauté. Notons encore une fois - *il est possible* de laisser de côté les points-virgules la plupart du temps. Mais il est plus sûr -- surtout pour un débutant -- de les utiliser.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/05-types/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -65,7 +65,7 @@ Les valeurs numériques spéciales appartiennent formellement au type "number".
65
65
66
66
Nous allons en voir plus sur le travail avec les nombres dans le chapitre <info:number>.
67
67
68
-
## BigInt
68
+
## BigInt [#bigint-type]
69
69
70
70
En JavaScript, le type "number" ne peut pas représenter des valeurs entières supérieures à <code>(2<sup>53</sup>-1)</code> (c'est `9007199254740991`), ou moins que <code>-(2<sup>53</sup>-1)</code> pour les chiffres négatifs. C'est une limitation technique causée par leur représentation interne.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/15-function-basics/article.md
+65-7Lines changed: 65 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,10 +20,14 @@ function showMessage() {
20
20
}
21
21
```
22
22
23
+
<<<<<<< HEAD
23
24
Le mot-clé `function` commence en premier, puis le *nom de la fonction*, puis une liste de *paramètres* entre les parenthèses (séparés par des virgules, vides dans l'exemple ci-dessus) et enfin le code de la fonction, également appelé "le corps de la fonction", entre des accolades.
25
+
=======
26
+
The `function` keyword goes first, then goes the *name of the function*, then a list of *parameters* between the parentheses (comma-separated, empty in the example above, we'll see examples later) and finally the code of the function, also named "the function body", between curly braces.
Lorsque la fonction est appelée dans les lignes `(*)` et `(**)`, les valeurs données sont copiées dans les variables locales `from` et `text`. Ensuite, la fonction les utilise.
157
167
158
168
Voici un autre exemple: nous avons une variable `from` et la transmettons à la fonction. Remarque : la fonction change `from`, mais le changement n'estpasvisible à l'extérieur, car une fonction obtient toujours une copie de la valeur :
Si un paramètre n'est pas fourni, sa valeur devient `undefined`.
192
+
=======
193
+
When a value is passed as a function parameter, it's also called an *argument*.
194
+
195
+
In other words, to put these terms straight:
196
+
197
+
- A parameter is the variable listed inside the parentheses in the function declaration (it's a declaration time term)
198
+
- An argument is the value that is passed to the function when it is called (it's a call time term).
199
+
200
+
We declare functions listing their parameters, then call them passing arguments.
201
+
202
+
In the example above, one might say: "the function `sayMessage` is declared with two parameters, then called with two arguments: `from` and `"Hello"`".
203
+
204
+
205
+
## Default values
206
+
207
+
If a function is called, but an argument is not provided, then the corresponding value becomes `undefined`.
208
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
182
209
183
210
Par exemple, la fonction `showMessage(from, text)` mentionnée précédemment peut être appelée avec un seul argument :
184
211
185
212
```js
186
213
showMessage("Ann");
187
214
```
188
215
216
+
<<<<<<< HEAD
189
217
Ce n’est pas une erreur. Un tel appel produirait `"*Annt*: undefined"`. Il n’y a pas de `text`, donc on suppose que `text===undefined`.
190
218
191
219
Si nous voulons utiliser un `text` "par défaut" dans ce cas, nous pouvons le spécifier après `=` :
220
+
=======
221
+
That's not an error. Such a call would output `"*Ann*: undefined"`. As the value for `text` isn't passed, it becomes `undefined`.
222
+
223
+
We can specify the so-called "default" (to use if omitted) value for a parameter in the function declaration, using `=`:
224
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
192
225
193
226
```jsrun
194
227
functionshowMessage(from, *!*text="no text given"*/!*) {
@@ -212,19 +245,33 @@ function showMessage(from, text = anotherFunction()) {
Dansl'exemple ci-dessus, `anotherFunction()` est appelé à chaque fois que `showMessage()` est appelé sans le paramètre `text`.
250
+
=======
251
+
In the example above, `anotherFunction()` isn'tcalledatall, ifthe`text`parameterisprovided.
252
+
253
+
Ontheotherhand, it's independently called every time when `text` is missing.
254
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
216
255
```
217
256
218
257
### Paramètres par défaut alternatifs
219
258
259
+
<<<<<<< HEAD
220
260
Il est parfois judicieux de définir des valeurs par défaut pour les paramètres non pas dans la déclaration de fonction, mais à un stade ultérieur, lors de son exécution.
221
261
222
262
Pour vérifier un paramètre omis, nous pouvons le comparer avec `undefined` :
263
+
=======
264
+
Sometimes it makes sense to assign default values for parameters not in the function declaration, but at a later stage.
265
+
266
+
We can check if the parameter is passed during the function execution, by comparing it with `undefined`:
267
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
223
268
224
269
```js run
225
270
function showMessage(text) {
271
+
// ...
272
+
226
273
*!*
227
-
if (text === undefined) {
274
+
if (text === undefined) { // if the parameter is missing
// si le paramètre de texte est omis ou "" est passé, définissez-le sur 'empty'
290
+
=======
291
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
242
292
function showMessage(text) {
293
+
// if text is undefined or otherwise falsy, set it to 'empty'
243
294
text = text || 'empty';
244
295
...
245
296
}
246
297
```
247
298
299
+
<<<<<<<HEAD
248
300
LesmoteursJavaScriptmodernesprennentencharge [l'opérateur de coalescence des nuls](info:nullish-coalescing-operator) `??`, c'estmieuxquanddesvaleursfausses, tellesque`0`, sontconsidéréescommerégulières:
249
301
250
302
```js run
251
303
// s'il n'y a pas de paramètre "count", afficher "unknown"
304
+
=======
305
+
Modern JavaScript engines support the [nullish coalescing operator](info:nullish-coalescing-operator) `??`, it's better when most falsy values, such as `0`, should be considered "normal":
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/06-polyfills/article.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,11 @@ Ici, dans ce chapitre, notre objectif est de comprendre l'essentiel de leur fonc
22
22
23
23
## Les transpilers
24
24
25
+
<<<<<<< HEAD
25
26
Un [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) est un logiciel spécial qui peut analyser ("lire et comprendre") le code moderne et le réécrire en utilisant des constructions de syntaxe plus anciennes, de sorte que le résultat soit le même.
27
+
=======
28
+
A [transpiler](https://en.wikipedia.org/wiki/Source-to-source_compiler) is a special piece of software that translates source code to another source code. It can parse ("read and understand") modern code and rewrite it using older syntax constructs, so that it'll also work in outdated engines.
29
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
26
30
27
31
Par exemple, JavaScript avant l'année 2020 n'avait pas "l'opérateur de coalescence des nuls" `??`. Ainsi, si un visiteur utilise un navigateur obsolète, il peut ne pas comprendre le code tel que `height = height ?? 100`.
Copy file name to clipboardExpand all lines: 1-js/04-object-basics/06-constructor-new/article.md
+13-1Lines changed: 13 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -64,13 +64,21 @@ Maintenant, si nous voulons créer d'autres utilisateurs, nous pouvons appeler `
64
64
65
65
C’est l’objectif principal des constructeurs -- implémenter du code de création d’objet réutilisable.
66
66
67
+
<<<<<<< HEAD
67
68
Notons encore une fois - techniquement, toute fonction peut être utilisée en tant que constructeur. Autrement dit, toute fonction peut être exécutée avec `new`, et il exécutera l'algorithme ci-dessus. La "lettre majuscule d’abord" est une convention pour préciser qu’une fonction doit être exécutée avec `new`.
68
69
69
70
````smart header="new function() { ... }"
70
71
Si nous avons beaucoup de lignes de code concernant la création d'un seul objet complexe, nous pouvons les envelopper dans une fonction constructeur, comme ceci :
72
+
=======
73
+
Let's note once again -- technically, any function (except arrow functions, as they don't have `this`) can be used as a constructor. It can be run with `new`, and it will execute the algorithm above. The "capital letter first" is a common agreement, to make it clear that a function is to be run with `new`.
74
+
75
+
````smart header="new function() { ... }"
76
+
If we have many lines of code all about creation of a single complex object, we can wrap them in an immediately called constructor function, like this:
77
+
>>>>>>> 8558fa8f5cfb16ef62aa537d323e34d9bef6b4de
71
78
72
79
```js
73
-
let user = new function() {
80
+
// create a function and immediately call it with new
81
+
let user = new function() {
74
82
this.name = "John";
75
83
this.isAdmin = false;
76
84
@@ -80,7 +88,11 @@ let user = new function() {
80
88
};
81
89
```
82
90
91
+
<<<<<<< HEAD
83
92
Le constructeur ne peut plus être appelé car il n’est sauvegardé nulle part, il est simplement créé et appelé. Donc, cette astuce vise à encapsuler le code qui construit l'objet unique, sans réutilisation ultérieure.
93
+
=======
94
+
This constructor can't be called again, because it is not saved anywhere, just created and called. So this trick aims to encapsulate the code that constructs the single object, without future reuse.
0 commit comments