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/15-function-basics/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
@@ -182,7 +182,11 @@ En d'autres termes, pour mettre ces termes au clair :
182
182
183
183
Nous déclarons des fonctions en listant leurs paramètres, puis les appelons en passant des arguments.
184
184
185
+
<<<<<<< HEAD
185
186
Dans l'exemple ci-dessus, on pourrait dire : "la fonction `sayMessage` est déclarée avec deux paramètres, puis appelée avec deux arguments : `from` et `"Hello"`".
187
+
=======
188
+
In the example above, one might say: "the function `showMessage` is declared with two parameters, then called with two arguments: `from` and `"Hello"`".
Copy file name to clipboardExpand all lines: 1-js/05-data-types/02-number/article.md
+12Lines changed: 12 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,11 @@ En JavaScript moderne, il existe deux types de nombres :
4
4
5
5
1. Les nombres normaux en JavaScript sont stockés au format 64 bits [IEEE-754](https://en.wikipedia.org/wiki/IEEE_754-2008_revision), également connu sous le nom de "nombres à virgule flottante double précision". Ce sont des chiffres que nous utilisons le plus souvent, et nous en parlerons dans ce chapitre.
6
6
7
+
<<<<<<< HEAD
7
8
2. Les nombres BigInt pour représenter des entiers de longueur arbitraire. Ils sont parfois nécessaires, car un nombre régulier ne peut pas dépasser <code>2<sup>53</sup></code> ou être inférieur à <code>-2<sup>53</sup></code>. Comme les bigints sont utilisés dans quelques zones spéciales, nous leur consacrons un chapitre spécial <info:bigint>.
9
+
=======
10
+
2. BigInt numbers, to represent integers of arbitrary length. They are sometimes needed, because a regular number can't safely exceed <code>2<sup>53</sup></code> or be less than <code>-2<sup>53</sup></code>. As bigints are used in few special areas, we devote them a special chapter <info:bigint>.
11
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
8
12
9
13
Donc, ici, nous allons parler de chiffres réguliers. Augmentons nos connaissances à leur sujet.
10
14
@@ -54,7 +58,11 @@ Comme avant, l'utilisation de `"e"` peut nous aider. Si nous voulons éviter d'
54
58
let ms =1e-6; // six zéros à gauche de 1
55
59
```
56
60
61
+
<<<<<<< HEAD
57
62
Si nous comptons les zéros dans `0.000001`, il y en a 6. Alors, logiquement, c'est `1e-6`.
63
+
=======
64
+
If we count the zeroes in `0.000001`, there are 6 of them. So naturally it's `1e-6`.
65
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
58
66
59
67
En d'autres termes, un nombre négatif après `"e"` signifie une division par 1 avec le nombre donné de zéros:
60
68
@@ -331,7 +339,11 @@ let num = +prompt("Entrez un nombre", '');
331
339
alert( isFinite(num) );
332
340
```
333
341
342
+
<<<<<<< HEAD
334
343
Veuillez noter qu'une chaîne de caractères vide ou une chaîne de caractères contenant seulement un espace est traitée comme `0` dans toutes les fonctions numérique, y compris `isFinite`.
344
+
=======
345
+
Please note that an empty or a space-only string is treated as `0` in all numeric functions including `isFinite`.
Cela peut sembler difficile au premier abord, mais il devient facile à comprendre après l’avoir utilisé une ou deux fois. Nous pouvons faire de puissantes chaînes de transformations de cette façon.
115
+
=======
116
+
It may look difficult at first sight, but becomes easy to understand after you use it once or twice. We can make powerful chains of transforms this way.
Copy file name to clipboardExpand all lines: 1-js/07-object-properties/01-property-descriptors/article.md
+64-2Lines changed: 64 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -19,7 +19,11 @@ Nous ne les avons pas encore vues, car généralement elles ne se présentent pa
19
19
20
20
Voyons d’abord comment obtenir ces "flags".
21
21
22
+
<<<<<<< HEAD
22
23
La methode [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyDescriptor) permet d'interroger les informations *complètes* sur une propriété.
24
+
=======
25
+
The method [Object.getOwnPropertyDescriptor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptor) allows to query the *full* information about a property.
Pour changer les attributs, on peut utiliser [Object.defineProperty](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperty).
63
+
=======
64
+
To change the flags, we can use [Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty).
65
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
58
66
59
67
La syntaxe est la suivante:
60
68
@@ -194,7 +202,11 @@ alert(Object.keys(user)); // name
194
202
195
203
Le descripteur non configurable (`configurable: false`) est parfois prédéfini pour les objets et propriétés intégrés.
196
204
205
+
<<<<<<< HEAD
197
206
Une propriété non configurable ne peut pas être supprimée.
207
+
=======
208
+
A non-configurable property can't be deleted, its attributes can't be modified.
209
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
198
210
199
211
Par exemple, `Math.PI` est en lecture seule, non énumérable et non configurable :
Ainsi, un programmeur est incapable de changer la valeur de `Math.PI` ou de le remplacer.
215
227
216
228
```js run
217
-
Math.PI=3; // Error
229
+
Math.PI=3; // Error, because it has writable: false
218
230
219
231
// supprimer Math.PI ne fonctionnera pas non plus
220
232
```
221
233
234
+
<<<<<<< HEAD
222
235
Rendre une propriété non configurable est une route à sens unique. Nous ne pouvons pas la rétablir avec `defineProperty`.
223
236
224
237
Pour être précis, la non-configurabilité impose plusieurs restrictions à `defineProperty` :
@@ -228,6 +241,20 @@ Pour être précis, la non-configurabilité impose plusieurs restrictions à `de
228
241
4. Impossible de changer `get/set` pour une propriété d'accesseur (mais peut les affecter en cas d'absence).
229
242
230
243
**L'idée de "configurable : false" est d'empêcher les changements d'indicateurs de propriété et sa suppression, tout en permettant de changer sa valeur.**
244
+
=======
245
+
We also can't change `Math.PI` to be `writable` again:
```smart header="The only attribute change possible: writable true -> false"
294
+
There's a minor exception about changing flags.
295
+
296
+
We can change `writable: true` to `false` for a non-configurable property, thus preventing its value modification (to add another layer of protection). Not the other way around though.
297
+
```
266
298
267
299
## Object.defineProperties
268
300
301
+
<<<<<<< HEAD
269
302
Il y a une méthode [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/defineProperties) qui permet de définir plusieurs propriétés à la fois.
303
+
=======
304
+
There's a method [Object.defineProperties(obj, descriptors)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperties) that allows to define many properties at once.
305
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
270
306
271
307
La syntaxe est la suivante:
272
308
@@ -292,7 +328,11 @@ Nous pouvons donc définir plusieurs propriétés à la fois.
292
328
293
329
## Object.getOwnPropertyDescriptors
294
330
331
+
<<<<<<< HEAD
295
332
Pour obtenir tous les descripteurs de propriété à la fois, nous pouvons utiliser la méthode [Object.getOwnPropertyDescriptors(obj)](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Object/getOwnPropertyDescriptors).
333
+
=======
334
+
To get all property descriptors at once, we can use the method [Object.getOwnPropertyDescriptors(obj)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/getOwnPropertyDescriptors).
335
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
296
336
297
337
Avec `Object.defineProperties`, elle peut être utilisé comme moyen de cloner un objet conscient des attributs:
298
338
@@ -318,6 +358,7 @@ Les descripteurs de propriété fonctionnent au niveau des propriétés individu
318
358
319
359
Il existe également des méthodes qui limitent l'accès à l'objet *entier*:
: Interdit l'ajout/la suppression/la modification de propriétés. Définit `configurable: false, writeable: false` pour toutes les propriétés existantes.
: Retourne `true` si l'ajout/la suppression/la modification de propriétés est interdite et si toutes les propriétés actuelles sont `configurable: false, writable: false`.
Copy file name to clipboardExpand all lines: 1-js/10-error-handling/2-custom-errors/article.md
+15-1Lines changed: 15 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,9 +21,15 @@ En interne, nous utiliserons `JSON.parse`. S'il reçoit un `json` malformé, il
21
21
22
22
Notre fonction `readUser(json)` va non seulement lire JSON, mais aussi vérifier ("valider") les données. S'il n'y a pas de champs obligatoires ou si le format est incorrect, c'est une erreur. Et ce n’est pas une `SyntaxError`, car les données sont syntaxiquement correctes, mais un autre type d’erreur. Nous l'appellerons `ValidationError` et créerons une classe pour cela. Une erreur de ce type devrait également comporter des informations sur le champ fautif.
23
23
24
+
<<<<<<< HEAD
24
25
Notre classe `ValidationError` devrait hériter de la classe `Error` intégrée.
25
26
26
27
Cette classe est intégrée, voici le code approximatif, pour que nous comprenions ce que nous étendons:
28
+
=======
29
+
Our `ValidationError` class should inherit from the `Error` class.
30
+
31
+
The `Error` class is built-in, but here's its approximate code so we can understand what we're extending:
32
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
27
33
28
34
```js
29
35
// Le "pseudocode" pour la classe d'erreur intégrée définie par JavaScript lui-même
@@ -117,15 +123,23 @@ Nous pourrions aussi regarder `err.name`, comme ceci:
117
123
// au lieu de (err instanceof SyntaxError)
118
124
} elseif (err.name=="SyntaxError") { // (*)
119
125
// ...
120
-
```
126
+
```
121
127
122
128
La version `instanceof` est bien meilleure, car dans le futur nous allons étendre `ValidationError`, en créer des sous-types, comme `PropertyRequiredError`. Et `instanceof` check continuera à fonctionner pour les nouvelles classes héritées. Donc, c'est à l'épreuve du futur.
123
129
130
+
<<<<<<< HEAD
124
131
De plus, il est important que si `catch` rencontre une erreur inconnue, il la propage, comme à la ligne `(**)`. Le bloc `catch` ne sait que gérer les erreurs de validation et de syntaxe, d'autres types (dus à une faute de frappe dans le code ou à d'autres inconnus) devraient "tomber".
132
+
=======
133
+
Also it's important that if `catch` meets an unknown error, then it rethrows it in the line `(**)`. The `catch` block only knows how to handle validation and syntax errors, other kinds (caused by a typo in the code or other unknown reasons) should fall through.
134
+
>>>>>>> 4d01fc20d4d82358e61518a31efe80dec9bb2602
125
135
126
136
## Héritage complémentaire
127
137
138
+
<<<<<<< HEAD
128
139
La classe `ValidationError` est très générique. Beaucoup de choses peuvent mal se passer. La propriété peut être absente ou dans un format incorrect (comme une valeur de chaîne pour `age`). Faisons une classe plus concrète `PropertyRequiredError`, exactement pour les propriétés absentes. Il contiendra des informations supplémentaires sur la propriété qui manque.
140
+
=======
141
+
The `ValidationError` class is very generic. Many things may go wrong. The property may be absent or it may be in a wrong format (like a string value for `age` instead of a number). Let's make a more concrete class `PropertyRequiredError`, exactly for absent properties. It will carry additional information about the property that's missing.
0 commit comments