From 844f5103992238c0c23203286dad16a466e89c97 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:09 +0200 Subject: move *.html to *.md --- .../reference/functions/rest_parameters/index.html | 216 --------------------- .../reference/functions/rest_parameters/index.md | 216 +++++++++++++++++++++ 2 files changed, 216 insertions(+), 216 deletions(-) delete mode 100644 files/fr/web/javascript/reference/functions/rest_parameters/index.html create mode 100644 files/fr/web/javascript/reference/functions/rest_parameters/index.md (limited to 'files/fr/web/javascript/reference/functions/rest_parameters') diff --git a/files/fr/web/javascript/reference/functions/rest_parameters/index.html b/files/fr/web/javascript/reference/functions/rest_parameters/index.html deleted file mode 100644 index 90984a9267..0000000000 --- a/files/fr/web/javascript/reference/functions/rest_parameters/index.html +++ /dev/null @@ -1,216 +0,0 @@ ---- -title: Paramètres du reste (Rest parameters) -slug: Web/JavaScript/Reference/Functions/rest_parameters -tags: - - ECMAScript 2015 - - Functions - - JavaScript - - Reference -translation_of: Web/JavaScript/Reference/Functions/rest_parameters -original_slug: Web/JavaScript/Reference/Fonctions/paramètres_du_reste ---- -
{{jsSidebar("Functions")}}
- -

Cette syntaxe permet de représenter un nombre indéfini d'arguments sous forme d'un tableau.

- -
{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}
- -

Syntaxe

- -
function f(a, b, ...lesArguments) {
-  // ...
-}
-
- -

Description

- -

Si le dernier paramètre nommé fourni à la fonction est préfixé de ... (trois points), il devient un tableau dont les éléments entre 0 (inclus) et lesArguments.length (exclus) sont fournis comme autres arguments à la fonction.

- -
function maFonction(a, b, ...plusDArguments) {
-  console.log("a", a);
-  console.log("b", b);
-  console.log("plusDArguments", plusDArguments);
-}
-
-maFonction("un", "deux", "trois", "quatre", "cinq");
-// affichera ceci dans la console :
-// a, "un"
-// b, "deux"
-// plusDArguments, ["trois", "quatre", "cinq"]
- -

Les différences entre les paramètres du reste et l'objet arguments

- -

Il y a trois principales différences entre les paramètres du reste et l'objet {{jsxref("Fonctions/arguments","arguments")}} :

- - - -

Convertir arguments en un tableau

- -

Ces paramètres ont été introduits afin de réduire le code passe-partout souvent induit par les arguments.

- -
// Avant les paramètres du reste, on observait souvent ce style de code :
-function f(a, b){
-  var args = Array.prototype.slice.call(arguments, f.length);
-  // ou encore
-  var args = [].slice.call(arguments);
-  // ou encore
-  var args = Array.from(arguments);
-
-  // et on pouvait alors écrire
-  var premier = args.shift(); // OK
-  // mais pas
-  var premier = arguments.shift(); // erreur car arguments n'est pas un tableau
-}
-
-// ce qui est l'équivalent de
-function f(...args) {
-  var tabNormal = args;
-  var premier = tabNormal.shift();
-}
-
- -

La décomposition sur les paramètres du reste

- -

On peut également décomposer les paramètres du reste en variables distinctes :

- -
function f(...[a, b, c]) {
-  return a + b + c;
-}
-
-f(1);          // NaN (b et c valent undefined)
-f(1, 2, 3);    // 6
-f(1, 2, 3, 4); // 6, le dernier paramètre n'est pas décomposé
-
- -

Vous pouvez également accéder aux éléments des paramètres du reste :

- -
function fun1(...lesArguments) {
-    console.log("valeur", lesArguments[0][0]);
-}
-
-fun1([5, 2], [5, 4]); // 5
-fun1([8, 2]); // 8
-fun1([9, 6, 7]); // 9
- -

Exemples

- -

S'il n'y a qu'un seul argument qui est décomposé par la syntaxe, la valeur sera toujours un tableau :

- -
function maFonction(a, b, ...autres);
-  console.log(a);
-  console.log(b);
-  console.log(autres);
-}
-
-maFonction("un", "deux", "trois");
-// affichera ceci dans la console
-// "un"
-// "deux"
-// ["trois"]
-
- -

De même, s'il n'y a pas suffisamment d'arguments, ce sera un tableau vide :

- -
function maFonction(a, b, ...autres);
-  console.log(a);
-  console.log(b);
-  console.log(autres);
-}
-
-maFonction("un", "deux");
-// affichera ceci dans la console
-// "un"
-// "deux"
-// []
- -

lesArguments est un tableau et dispose donc d'une propriété length permettant de compter ses éléments :

- -
function fun1(...lesArguments) {
-  console.log(lesArguments.length);
-}
-
-fun1();  // 0
-fun1(5); // 1
-fun1(5, 6, 7); // 3
-
- -

Dans l'exemple qui suit, on utilise le paramètre Rest pour collecter les arguments après le premier pour les multiplier par le premier :

- -
function multiplier(facteur, ...lesArguments) {
-  return lesArguments.map(function (element) {
-    return facteur * element;
-  });
-}
-
-var arr = multiplier(2, 1, 2, 3);
-console.log(arr); // [2, 4, 6]
-
- -

L'exemple qui suit illustre comment on peut utiliser des méthodes de Array sur le paramètre Rest mais pas sur l'objet arguments :

- -
function trierParamRest(...lesArguments) {
-  var argumentsTriés = lesArguments.sort();
-  return argumentsTriés;
-}
-
-console.log(trierParamRest(5,3,7,1)); // shows 1,3,5,7
-
-function trierArguments() {
-  var argumentsTriés = arguments.sort();
-  return argumentsTriés; // cela ne sera jamais appelé
-}
-
-// renvoie une exception TypeError: arguments.sort n'est pas une function
-console.log(trierArguments(5,3,7,1));
-
- -

Pour utiliser les méthodes propres aux instances d'Array sur l'objet arguments, il est nécessaire de le convertir.

- -
function trierAguments() {
-  var args = Array.from(arguments);
-  var argumentsTriés = args.sort();
-  return argumentsTriés;
-}
-console.log(trierArguments(5, 3, 7, 1)); // [1, 3, 5, 7]
-
- -

Spécifications

- - - - - - - - - - - - - - - - - - - -
SpécificationÉtatCommentaires
{{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES6')}}Définition initiale.
{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ESDraft')}}
- -

Compatibilité des navigateurs

- -

{{Compat("javascript.functions.rest_parameters")}}

- -

Voir aussi

- - diff --git a/files/fr/web/javascript/reference/functions/rest_parameters/index.md b/files/fr/web/javascript/reference/functions/rest_parameters/index.md new file mode 100644 index 0000000000..90984a9267 --- /dev/null +++ b/files/fr/web/javascript/reference/functions/rest_parameters/index.md @@ -0,0 +1,216 @@ +--- +title: Paramètres du reste (Rest parameters) +slug: Web/JavaScript/Reference/Functions/rest_parameters +tags: + - ECMAScript 2015 + - Functions + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Functions/rest_parameters +original_slug: Web/JavaScript/Reference/Fonctions/paramètres_du_reste +--- +
{{jsSidebar("Functions")}}
+ +

Cette syntaxe permet de représenter un nombre indéfini d'arguments sous forme d'un tableau.

+ +
{{EmbedInteractiveExample("pages/js/functions-restparameters.html")}}
+ +

Syntaxe

+ +
function f(a, b, ...lesArguments) {
+  // ...
+}
+
+ +

Description

+ +

Si le dernier paramètre nommé fourni à la fonction est préfixé de ... (trois points), il devient un tableau dont les éléments entre 0 (inclus) et lesArguments.length (exclus) sont fournis comme autres arguments à la fonction.

+ +
function maFonction(a, b, ...plusDArguments) {
+  console.log("a", a);
+  console.log("b", b);
+  console.log("plusDArguments", plusDArguments);
+}
+
+maFonction("un", "deux", "trois", "quatre", "cinq");
+// affichera ceci dans la console :
+// a, "un"
+// b, "deux"
+// plusDArguments, ["trois", "quatre", "cinq"]
+ +

Les différences entre les paramètres du reste et l'objet arguments

+ +

Il y a trois principales différences entre les paramètres du reste et l'objet {{jsxref("Fonctions/arguments","arguments")}} :

+ + + +

Convertir arguments en un tableau

+ +

Ces paramètres ont été introduits afin de réduire le code passe-partout souvent induit par les arguments.

+ +
// Avant les paramètres du reste, on observait souvent ce style de code :
+function f(a, b){
+  var args = Array.prototype.slice.call(arguments, f.length);
+  // ou encore
+  var args = [].slice.call(arguments);
+  // ou encore
+  var args = Array.from(arguments);
+
+  // et on pouvait alors écrire
+  var premier = args.shift(); // OK
+  // mais pas
+  var premier = arguments.shift(); // erreur car arguments n'est pas un tableau
+}
+
+// ce qui est l'équivalent de
+function f(...args) {
+  var tabNormal = args;
+  var premier = tabNormal.shift();
+}
+
+ +

La décomposition sur les paramètres du reste

+ +

On peut également décomposer les paramètres du reste en variables distinctes :

+ +
function f(...[a, b, c]) {
+  return a + b + c;
+}
+
+f(1);          // NaN (b et c valent undefined)
+f(1, 2, 3);    // 6
+f(1, 2, 3, 4); // 6, le dernier paramètre n'est pas décomposé
+
+ +

Vous pouvez également accéder aux éléments des paramètres du reste :

+ +
function fun1(...lesArguments) {
+    console.log("valeur", lesArguments[0][0]);
+}
+
+fun1([5, 2], [5, 4]); // 5
+fun1([8, 2]); // 8
+fun1([9, 6, 7]); // 9
+ +

Exemples

+ +

S'il n'y a qu'un seul argument qui est décomposé par la syntaxe, la valeur sera toujours un tableau :

+ +
function maFonction(a, b, ...autres);
+  console.log(a);
+  console.log(b);
+  console.log(autres);
+}
+
+maFonction("un", "deux", "trois");
+// affichera ceci dans la console
+// "un"
+// "deux"
+// ["trois"]
+
+ +

De même, s'il n'y a pas suffisamment d'arguments, ce sera un tableau vide :

+ +
function maFonction(a, b, ...autres);
+  console.log(a);
+  console.log(b);
+  console.log(autres);
+}
+
+maFonction("un", "deux");
+// affichera ceci dans la console
+// "un"
+// "deux"
+// []
+ +

lesArguments est un tableau et dispose donc d'une propriété length permettant de compter ses éléments :

+ +
function fun1(...lesArguments) {
+  console.log(lesArguments.length);
+}
+
+fun1();  // 0
+fun1(5); // 1
+fun1(5, 6, 7); // 3
+
+ +

Dans l'exemple qui suit, on utilise le paramètre Rest pour collecter les arguments après le premier pour les multiplier par le premier :

+ +
function multiplier(facteur, ...lesArguments) {
+  return lesArguments.map(function (element) {
+    return facteur * element;
+  });
+}
+
+var arr = multiplier(2, 1, 2, 3);
+console.log(arr); // [2, 4, 6]
+
+ +

L'exemple qui suit illustre comment on peut utiliser des méthodes de Array sur le paramètre Rest mais pas sur l'objet arguments :

+ +
function trierParamRest(...lesArguments) {
+  var argumentsTriés = lesArguments.sort();
+  return argumentsTriés;
+}
+
+console.log(trierParamRest(5,3,7,1)); // shows 1,3,5,7
+
+function trierArguments() {
+  var argumentsTriés = arguments.sort();
+  return argumentsTriés; // cela ne sera jamais appelé
+}
+
+// renvoie une exception TypeError: arguments.sort n'est pas une function
+console.log(trierArguments(5,3,7,1));
+
+ +

Pour utiliser les méthodes propres aux instances d'Array sur l'objet arguments, il est nécessaire de le convertir.

+ +
function trierAguments() {
+  var args = Array.from(arguments);
+  var argumentsTriés = args.sort();
+  return argumentsTriés;
+}
+console.log(trierArguments(5, 3, 7, 1)); // [1, 3, 5, 7]
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES6', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ES6')}}Définition initiale.
{{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}}{{Spec2('ESDraft')}}
+ +

Compatibilité des navigateurs

+ +

{{Compat("javascript.functions.rest_parameters")}}

+ +

Voir aussi

+ + -- cgit v1.2.3-54-g00ecf