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/06-advanced-functions/02-rest-parameters-spread/article.md
+9-9Lines changed: 9 additions & 9 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,13 +8,14 @@ Par exemple :
8
8
-`Object.assign(dest, src1, ..., srcN)` -- copie les propriétés de `src1..N` dans `dest`.
9
9
- ... etc.
10
10
11
-
Dans ce chapitre, nous allons apprendre à faire de même. Et aussi, comment passer des tableaux à des fonctions telles que des paramètres.
11
+
Dans ce chapitre, nous apprendrons à faire de même. Et aussi, comment passer des tableaux en paramètre à de telles fonctions.
12
12
13
13
## Les paramètres Rest `...`
14
14
15
15
Une fonction peut être appelée avec un nombre quelconque d'arguments, peu importe comment elle a été définie.
16
16
17
17
Comme ici :
18
+
18
19
```js run
19
20
functionsum(a, b) {
20
21
return a + b;
@@ -96,9 +97,9 @@ showName("Julius", "Caesar");
96
97
showName("Ilya");
97
98
```
98
99
99
-
Autrefois, les paramètres rest n'existaient pas dans le langage, et utiliser les `arguments` était le seul moyen d'obtenir tous les arguments de la fonction. Et cela fonctionne toujours, on peut le trouver dans l'ancien code.
100
+
Autrefois, les paramètres rest n'existaient pas dans le langage, et utiliser `arguments` était le seul moyen d'obtenir tous les arguments de la fonction. Et cela fonctionne toujours, on peut le trouver dans l'ancien code.
100
101
101
-
Mais l’inconvénient est que, bien que les `arguments` ressemblent à un tableau et qu’ils soient itératifs, ce n’est pas un tableau. Il ne supporte pas les méthodes de tableau, nous ne pouvons donc pas appeler `arguments.map(...)` par exemple.
102
+
Mais l’inconvénient est que, bien que `arguments` ressemblent à un tableau et qu’ils soient itératifs, ce n’est pas un tableau. Il ne supporte pas les méthodes de tableau, nous ne pouvons donc pas appeler `arguments.map(...)` par exemple.
102
103
103
104
De plus, il contient toujours tous les arguments. Nous ne pouvons pas les capturer partiellement, comme nous l’avons fait avec les paramètres rest.
104
105
@@ -147,7 +148,7 @@ alert( Math.max(arr) ); // NaN
147
148
148
149
Et nous ne pouvons sûrement pas lister manuellement les éléments dans le code `Math.max(arr[0], arr[1], arr[2])`, parce que nous pouvons ne pas savoir combien il y en a. Au fur et à mesure que notre script s'exécute, il peut y en avoir beaucoup ou pas du tout. Et ça deviendrait moche.
149
150
150
-
*La sytaxe Spread* à la rescousse! Il ressemble aux paramètres rest, en utilisant également `...`, mais fait tout le contraire.
151
+
*La sytaxe Spread* à la rescousse! Il ressemble aux paramètres rest, en utilisant également `...`, mais fait tout le contraire.
151
152
152
153
Quand `...arr` est utilisé dans l'appel de fonction, il "développe" un objet itérable `arr` dans la liste des arguments.
La syntaxe spread utilise en interne des itérateurs pour rassembler les éléments, de la même manière que `for..of`.
205
206
206
-
Donc, pour une chaine de caractères, `for..of` retourn des caractères et `...str` devient `"H","e","l","l","o"`. La liste de caractères est transmise à l'initialiseur de tableau `[...str]`.
207
+
Donc, pour une chaine de caractères, `for..of` retourne des caractères et `...str` devient `"H","e","l","l","o"`. La liste de caractères est transmise à l'initialiseur de tableau `[...str]`.
207
208
208
-
Pour cette tâche particulière, nous pourrions également utiliser `Array.from`, car il convertit un itérable (comme une chaîne de caractères) en un tableau :
209
+
Pour cette tâche particulière, nous pourrions également utiliser `Array.from`, car il convertit un itérable (comme une chaîne de caractères) en un tableau :
209
210
210
211
```js run
211
212
let str = "Hello";
@@ -223,10 +224,9 @@ Mais il existe une différence subtile entre `Array.from(obj)` et `[...obj]` :
223
224
224
225
Donc, pour transformer quelque chose en tableau, `Array.from` tend à être plus universel.
225
226
226
-
227
227
## Copier un tableau/objet
228
228
229
-
Souvenez-vous quand nous avons parlé de `Object.assign()` [par le passé](info:object-copy#cloning-and-merging-object-assign) ?
229
+
Vous souvenez-vous quand nous avons parlé de `Object.assign()` [par le passé](info:object-copy#cloning-and-merging-object-assign) ?
230
230
231
231
Il est possible de faire la même chose avec la syntaxe spread !
232
232
@@ -291,4 +291,4 @@ Modèles d'utilisation :
291
291
292
292
Ensemble, ils permettent de voyager facilement entre une liste et un tableau de paramètres.
293
293
294
-
Tous les arguments d'un appel de fonction sont également disponibles dans les `arguments` "à l'ancienne" : objet itérable array-like.
294
+
Tous les arguments d'un appel de fonction sont également disponibles dans la vriable `arguments` "à l'ancienne" : objet itérable array-like.
0 commit comments