From bf8e099b9c8b3c60d60b3712b4fc97b052c39887 Mon Sep 17 00:00:00 2001 From: julieng Date: Tue, 3 Aug 2021 08:03:23 +0200 Subject: convert content to md --- .../functions/default_parameters/index.md | 158 ++++++++++----------- 1 file changed, 75 insertions(+), 83 deletions(-) (limited to 'files/fr/web/javascript/reference/functions/default_parameters') diff --git a/files/fr/web/javascript/reference/functions/default_parameters/index.md b/files/fr/web/javascript/reference/functions/default_parameters/index.md index abcdcae567..92a5187cf6 100644 --- a/files/fr/web/javascript/reference/functions/default_parameters/index.md +++ b/files/fr/web/javascript/reference/functions/default_parameters/index.md @@ -9,28 +9,26 @@ tags: translation_of: Web/JavaScript/Reference/Functions/Default_parameters original_slug: Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_arguments --- -
{{jsSidebar("Functions")}}
+{{jsSidebar("Functions")}} -

Cette syntaxe permet d'initialiser des paramètres lors de l'appel de la fonction si aucune valeur n'est passée ou si c'est la valeur {{jsxref("undefined")}} qui est passée.

+Cette syntaxe permet d'initialiser des paramètres lors de l'appel de la fonction si aucune valeur n'est passée ou si c'est la valeur {{jsxref("undefined")}} qui est passée. +{{EmbedInteractiveExample("pages/js/functions-default.html")}} +## Syntaxe -
{{EmbedInteractiveExample("pages/js/functions-default.html")}}
+ function [nom]([param1[ = valeurParDéfaut1 ][, ..., paramN[ = valeurParDéfautN ]]]) { + instructions + } -

Syntaxe

+## Description -
function [nom]([param1[ = valeurParDéfaut1 ][, ..., paramN[ = valeurParDéfautN ]]]) {
-   instructions
-}
-
- -

Description

- -

En JavaScript, par défaut, la valeur des paramètres d'une fonction sera undefined. Malgré tout, il peut être assez utile de pouvoir définir d'autres valeurs par défaut.

+En JavaScript, par défaut, la valeur des paramètres d'une fonction sera `undefined`. Malgré tout, il peut être assez utile de pouvoir définir d'autres valeurs par défaut. -

Auparavant, pour définir une valeur par défaut pour un paramètre, il fallait tester s'il valait undefined et lui affecter une valeur choisie le cas échéant. Dans l'exemple qui suit, le paramètre b n'a pas de valeur fournie lors de l'appel, aussi si on avait utilisé undefined dans la multiplication, la valeur retournée aurait été NaN. Aussi, dans la deuxième ligne du code, on prévoit ce cas :

+Auparavant, pour définir une valeur par défaut pour un paramètre, il fallait tester s'il valait `undefined` et lui affecter une valeur choisie le cas échéant. Dans l'exemple qui suit, le paramètre `b` n'a pas de valeur fournie lors de l'appel, aussi si on avait utilisé `undefined` dans la multiplication, la valeur retournée aurait été `NaN`. Aussi, dans la deuxième ligne du code, on prévoit ce cas : -
function multiplier(a, b) {
+```js
+function multiplier(a, b) {
   var b = (typeof b !== 'undefined') ? b : 1;
 
   return a * b;
@@ -39,26 +37,29 @@ original_slug: Web/JavaScript/Reference/Fonctions/Valeurs_par_défaut_des_argume
 multiplier(5, 2); // 10
 multiplier(5, 1); // 5
 multiplier(5);    // 5
-
+``` -

Grâce aux paramètres par défaut qui existent depuis ECMAScript 2015 (ES6), on peut se passer de cette vérification et alléger le code de la fonction :

+Grâce aux paramètres par défaut qui existent depuis ECMAScript 2015 (ES6), on peut se passer de cette vérification et alléger le code de la fonction : -
function multiplier(a, b = 1) {
+```js
+function multiplier(a, b = 1) {
   return a * b;
 }
 
 multiplier(5, 2); // 10
 multiplier(5, 1); // 5
 multiplier(5, undefined); // 5
-multiplier(5); // 5
+multiplier(5); // 5 +``` -

Exemples

+## Exemples -

Passer undefined en paramètre

+### Passer `undefined` en paramètre -

Dans l'exemple qui suit, le deuxième appel à la fonction fait explicitement appel à undefined. La valeur par défaut sera utilisée, y compris dans ce cas (en revanche, ce ne serait pas vrai pour null ou les autres valeurs équivalentes à false dans un contexte booléen).

+Dans l'exemple qui suit, le deuxième appel à la fonction fait explicitement appel à `undefined`. La valeur par défaut sera utilisée, y compris dans ce cas (en revanche, ce ne serait pas vrai pour `null` ou les autres valeurs équivalentes à `false` dans un contexte booléen). -
function test(num = 1) {
+```js
+function test(num = 1) {
   console.log(typeof num);
 }
 
@@ -66,38 +67,40 @@ test();           // number (num vaut 1)
 test(undefined);  // number (num vaut 1 également)
 test("");         // string (num vaut "")
 test(null);       // object (num vaut null)
-
+``` -

Évaluation à l'appel

+### Évaluation à l'appel -

L'argument par défaut est évalué à l'instant de l'appel. Ainsi, à la différence d'autres langages comme Python, un nouvel objet est créé à chaque appel de la fonction.

+L'argument par défaut est évalué à l'instant de l'appel. Ainsi, à la différence d'autres langages comme Python, un nouvel objet est créé à chaque appel de la fonction. -
function append(valeur, tableau = []) {
+```js
+function append(valeur, tableau = []) {
   tableau.push(valeur);
   return tableau;
 }
 
 append(1); //[1]
 append(2); //[2], et non [1, 2]
+```
 
-
+Cela est également valable pour les fonctions et les variables -

Cela est également valable pour les fonctions et les variables

- -
function appelQqc(truc = qqc()) { return truc }
+```js
+function appelQqc(truc = qqc()) { return truc }
 
 appelQqc(); //lève une ReferenceError
 
-let qqc = () => "machin"
+let qqc = () => "machin"
 
 appelQqc(); // "machin"
-
+``` -

Les paramètres par défaut sont disponibles à la suite

+### Les paramètres par défaut sont disponibles à la suite -

Les paramètres déjà rencontrés dans la définition peuvent être utilisés comme paramètres par défaut dans la suite de la définition :

+Les paramètres déjà rencontrés dans la définition peuvent être utilisés comme paramètres par défaut dans la suite de la définition : -
function salutation(nom, salut, message = salut + ' ' + nom){
+```js
+function salutation(nom, salut, message = salut + ' ' + nom){
     return [nom, salut, message];
 }
 
@@ -105,11 +108,13 @@ salutation('David', 'Coucou');
 // ["David", "Coucou", "Coucou David"]
 
 salutation('David', 'Coucou', 'Bon anniversaire !');
-// ["David", "Coucou", "Bon anniversaire !"]
+// ["David", "Coucou", "Bon anniversaire !"] +``` -

On peut utiliser cette fonctionnalité afin de gérer beaucoup de cas aux limites :

+On peut utiliser cette fonctionnalité afin de gérer beaucoup de cas aux limites : -
function go() {
+```js
+function go() {
   return ":P"
 }
 
@@ -144,68 +149,55 @@ avecDéfaut.call({value:"=^_^="});
 
 sansDéfaut.call({value:"=^_^="});
 // [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
-
+``` -

Les fonctions définies dans le corps d'une fonction

+### Les fonctions définies dans le corps d'une fonction -

À partir de Gecko 33 {{geckoRelease(33)}}. Les fonctions déclarées dans le corps de la fonction ne peuvent pas servir comme valeurs par défaut, cela lèvera une exception {{jsxref("ReferenceError")}} (plus précisément une {{jsxref("TypeError")}} avec SpiderMonkey, voir le {{bug(1022967)}}). Les paramètres par défaut sont exécutés en premier, les déclarations de fonctions présentes dans le corps de la fonction sont évaluées ensuite.

+À partir de Gecko 33 {{geckoRelease(33)}}. Les fonctions déclarées dans le corps de la fonction ne peuvent pas servir comme valeurs par défaut, cela lèvera une exception {{jsxref("ReferenceError")}} (plus précisément une {{jsxref("TypeError")}} avec SpiderMonkey, voir le {{bug(1022967)}}). Les paramètres par défaut sont exécutés en premier, les déclarations de fonctions présentes dans le corps de la fonction sont évaluées ensuite. -
// Ne fonctionnera pas, entraîne une ReferenceError.
+```js
+// Ne fonctionnera pas, entraîne une ReferenceError.
 function f(a = go()) {
   function go(){return ":P"}
 }
-
+``` -

Utilisation de paramètres sans valeur par défaut après les paramètres par défaut

+### Utilisation de paramètres sans valeur par défaut après les paramètres par défaut -

Avant Gecko 26 ({{geckoRelease(26)}}, le code suivant aurait entraîné une exception {{jsxref("SyntaxError")}}. Cela a été corrigé avec le bug {{bug(777060)}}. Les paramètres sont toujours ordonnés de gauche à droite et les valeurs par défaut sont surchargées s'ils viennent avant les autres paramètres :

+Avant Gecko 26 ({{geckoRelease(26)}}, le code suivant aurait entraîné une exception {{jsxref("SyntaxError")}}. Cela a été corrigé avec le bug {{bug(777060)}}. Les paramètres sont toujours ordonnés de gauche à droite et les valeurs par défaut sont surchargées s'ils viennent avant les autres paramètres : -
function f(x=1, y) {
+```js
+function f(x=1, y) {
   return [x, y];
 }
 
 f();  // [1, undefined]
 f(2); // [2, undefined]
-
+``` -

Paramètre par défaut et décomposition des paramètres

+### Paramètre par défaut et décomposition des paramètres -

Il est possible d'utiliser les valeurs par défaut avec la syntaxe de décomposition :

+Il est possible d'utiliser les valeurs par défaut avec [la syntaxe de décomposition](/fr/docs/Web/JavaScript/Reference/Opérateurs/Affecter_par_décomposition) : -
function f([x, y] = [1, 2], {z: z} = {z: 3}) {
+```js
+function f([x, y] = [1, 2], {z: z} = {z: 3}) {
   return x + y + z;
 }
 
-f(); // 6
- -

Spécifications

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

Compatibilité des navigateurs

- -

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

- -

Voir aussi

- - +f(); // 6 +``` + +## Spécifications + +| Spécification | État | Commentaires | +| ---------------------------------------------------------------------------------------------------- | ---------------------------- | -------------------- | +| {{SpecName('ES2015', '#sec-function-definitions', 'Function Definitions')}} | {{Spec2('ES2015')}} | Définition initiale. | +| {{SpecName('ESDraft', '#sec-function-definitions', 'Function Definitions')}} | {{Spec2('ESDraft')}} | | + +## Compatibilité des navigateurs + +{{Compat("javascript.functions.default_parameters")}} + +## Voir aussi + +- [La proposition originale sur ecmascript.org](https://wiki.ecmascript.org/doku.php?id=harmony:parameter_default_values) -- cgit v1.2.3-54-g00ecf