| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Functions/Default_parameters | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
Cette syntaxe permet d'initialiser des paramtres lors de l'appel de la fonction si aucune valeur n'est passe ou si c'est la valeur undefined qui est passe.
function multiply(a, b = 1) {
return a * b;
}
console.log(multiply(5, 2));
// Expected output: 10
console.log(multiply(5));
// Expected output: 5
function [nom]([param1[ = valeurParDfaut1 ][, ..., paramN[ = valeurParDfautN ]]]) {
instructions
}
En JavaScript, par dfaut, la valeur des paramtres d'une fonction sera undefined. Malgr tout, il peut tre assez utile de pouvoir dfinir d'autres valeurs par dfaut.
Auparavant, pour dfinir une valeur par dfaut pour un paramtre, il fallait tester s'il valait undefined et lui affecter une valeur choisie le cas chant. Dans l'exemple qui suit, le paramtre b n'a pas de valeur fournie lors de l'appel, aussi si on avait utilis undefined dans la multiplication, la valeur retourne aurait t NaN. Aussi, dans la deuxime ligne du code, on prvoit ce cas :
function multiplier(a, b) {
var b = typeof b !== "undefined" ? b : 1;
return a * b;
}
multiplier(5, 2); // 10
multiplier(5, 1); // 5
multiplier(5); // 5
Grce aux paramtres par dfaut qui existent depuis ECMAScript 2015 (ES6), on peut se passer de cette vrification et allger le code de la fonction :
function multiplier(a, b = 1) {
return a * b;
}
multiplier(5, 2); // 10
multiplier(5, 1); // 5
multiplier(5, undefined); // 5
multiplier(5); // 5
undefined en paramtreDans l'exemple qui suit, le deuxime appel la fonction fait explicitement appel undefined. La valeur par dfaut sera utilise, y compris dans ce cas (en revanche, ce ne serait pas vrai pour null ou les autres valeurs quivalentes false dans un contexte boolen).
function test(num = 1) {
console.log(typeof num);
}
test(); // number (num vaut 1)
test(undefined); // number (num vaut 1 galement)
test(""); // string (num vaut "")
test(null); // object (num vaut null)
L'argument par dfaut est valu l'instant de l'appel. Ainsi, la diffrence d'autres langages comme Python, un nouvel objet est cr chaque appel de la fonction.
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
function appelQqc(truc = qqc()) {
return truc;
}
appelQqc(); //lve une ReferenceError
let qqc = () => "machin";
appelQqc(); // "machin"
Les paramtres dj rencontrs dans la dfinition peuvent tre utiliss comme paramtres par dfaut dans la suite de la dfinition :
function salutation(nom, salut, message = salut + " " + nom) {
return [nom, salut, message];
}
salutation("David", "Coucou");
// ["David", "Coucou", "Coucou David"]
salutation("David", "Coucou", "Bon anniversaire !");
// ["David", "Coucou", "Bon anniversaire !"]
On peut utiliser cette fonctionnalit afin de grer beaucoup de cas aux limites :
function go() {
return ":P";
}
function avecDfaut(
a,
b = 5,
c = b,
d = go(),
e = this,
f = arguments,
g = this.value,
) {
return [a, b, c, d, e, f, g];
}
function sansDfaut(a, b, c, d, e, f, g) {
switch (arguments.length) {
case 0:
a;
case 1:
b = 5;
case 2:
c = b;
case 3:
d = go();
case 4:
e = this;
case 5:
f = arguments;
case 6:
g = this.value;
default:
}
return [a, b, c, d, e, f, g];
}
avecDfaut.call({ value: "=^_^=" });
// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
sansDfaut.call({ value: "=^_^=" });
// [undefined, 5, 5, ":P", {value:"=^_^="}, arguments, "=^_^="]
partir de Gecko 33, les fonctions dclares dans le corps de la fonction ne peuvent pas servir comme valeurs par dfaut, cela lvera une exception ReferenceError (plus prcisment une TypeError avec SpiderMonkey, voir le bug Firefox 1022967). Les paramtres par dfaut sont excuts en premier, les dclarations de fonctions prsentes dans le corps de la fonction sont values ensuite.
// Ne fonctionnera pas, entrane une ReferenceError.
function f(a = go()) {
function go() {
return ":P";
}
}
Avant Gecko 26, le code suivant aurait entran une exception SyntaxError. Cela a t corrig avec le bug Firefox 777060. Les paramtres sont toujours ordonns de gauche droite et les valeurs par dfaut sont surcharges s'ils viennent avant les autres paramtres :
function f(x = 1, y) {
return [x, y];
}
f(); // [1, undefined]
f(2); // [2, undefined]
Il est possible d'utiliser les valeurs par dfaut avec la syntaxe de dcomposition :
function f([x, y] = [1, 2], { z: z } = { z: 3 }) {
return x + y + z;
}
f(); // 6
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-function-definitions |
Cette page a t modifie le 7 sept. 2025 par les contributeurices du MDN.
Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |