JavaScript - 7.5 Paramètres par défaut
Il est souvent utile qu'un paramètre de fonction ait une valeur par défaut, utilisée quand l'appelant ne la fournit pas. Cette leçon prend l'exemple d'un calcul d'intérêt, avec un taux et une durée par défaut. Elle compare l'ancienne méthode avec l'opérateur or et la syntaxe moderne, puis présente la règle à respecter.
Une valeur de secours avec l'opérateur or
Avant la syntaxe moderne, on utilisait l'opérateur logique or dans le corps de la fonction. Par exemple, taux = taux || 3.5 garde la valeur reçue si elle existe, et utilise 3.5 dans le cas contraire.
Attention, cet opérateur considère aussi la valeur 0 comme fausse. Une valeur de 0 reçue par la fonction serait alors remplacée par la valeur par défaut.
Définir les valeurs par défaut dans la déclaration
Depuis ES6, la valeur par défaut s'écrit directement dans la déclaration de la fonction, avec le signe égal. La syntaxe est plus propre, et elle se lit plus facilement.
Avec cette écriture, le calcul de l'intérêt ne demande plus aucune expression logique dans le corps de la fonction.
function calculerInteret(principal, taux = 3.5, annees = 5) {
return principal * taux / 100 * annees;
}
console.log(calculerInteret(10000));
La règle de l'ordre des paramètres
Dès qu'un paramètre reçoit une valeur par défaut, tous les paramètres qui suivent doivent en avoir une aussi. La solution la plus simple est de placer le paramètre avec valeur par défaut en dernier.
Si seul le taux a une valeur par défaut, un appel avec deux valeurs range la deuxième dans le taux, et les années restent non définies. Passer undefined comme deuxième argument règle le problème, mais le code devient difficile à lire.
En résumé
Une valeur par défaut évite de passer un argument dont la valeur est presque toujours la même. On peut utiliser l'opérateur or dans le corps de la fonction, ou écrire la valeur directement dans la déclaration. Dans ce second cas, les paramètres qui suivent doivent aussi avoir une valeur par défaut, ou le paramètre concerné doit être le dernier.
Points clés
- Une valeur par défaut est utilisée quand l'appelant ne fournit pas l'argument.
- L'opérateur or permet une valeur de secours, mais il traite aussi 0 comme faux.
- La syntaxe moderne écrit la valeur par défaut directement dans la déclaration.
- Si un paramètre a une valeur par défaut, les suivants doivent en avoir une aussi.
- Le plus simple est de placer le paramètre avec valeur par défaut en dernier.
Questions fréquentes
Quelle est la meilleure façon de définir une valeur par défaut ?
La syntaxe moderne, écrite dans la déclaration de la fonction, est plus propre et plus lisible que l'opérateur or.
Pourquoi l'appel avec un seul argument donne-t-il un résultat faux ?
Le premier argument est affecté au premier paramètre, et les paramètres suivants restent sans valeur si on ne les a pas tous prévus.
Faut-il passer undefined pour sauter un paramètre ?
Cela fonctionne, mais le code est difficile à lire. Il vaut mieux placer le paramètre avec valeur par défaut à la fin.