Certains langages - comme Ruby, CoffeeScript et les prochaines versions de JavaScript - peuvent déclarer des paramètres par défaut lors de la définition d'une fonction, comme ceci :
// Sorties : "première chaîne" et "deuxième chaîne"
myFunc("première chaîne");
// Sorties : "première chaîne" et "deuxième chaîne version 2"
myFunc("première chaîne", "deuxième chaîne version 2");
Malheureusement, dans la version actuelle de javascript, cette façon d'écrire n'est pas valide. Alors, que pouvons-nous faire pour y parvenir, en utilisant notre ensemble d’outils existants ?
La solution la plus simple est la suivante :
console.log(param1, param2);
>
// Sorties : "première chaîne" et "deuxième chaîne version 2"
myFunc("première chaîne", "deuxième chaîne version 2");
Le fait est qu'un paramètre omis est toujours "indéfini" lors de son accès. C'est une bonne solution si vous n'avez qu'un seul paramètre, mais que se passe-t-il si vous en avez plusieurs ?
Si vous avez plus d'un paramètre, vous pouvez utiliser un objet comme paramètre, ce qui présente l'avantage que chaque paramètre a un nom clair. Si vous passez un paramètre d'objet, vous pouvez déclarer une valeur par défaut de la même manière.
var finalParams = defaultParams;
// Nous parcourons chaque propriété du paramObject
for (clé var dans paramObject) {
// Si la propriété actuelle n'a pas été héritée, continuez
Si (paramObject.hasOwnProperty(key)) {
// Si la propriété actuelle est définie,
// ajoutez-le à finalParams
Si (paramObject[key] !== non défini) {
finalParams[key] = paramObject[key];
}
>
>
console.log(finalParams.param1,
finalParams.param2,
finalParams.param3);
>
myFunc({param1 : "Ma propre chaîne"});
C'est un peu maladroit. Si vous utilisez cette méthode à de nombreux endroits, vous pouvez écrire une fonction wrapper Heureusement, de nombreuses bibliothèques ont désormais des méthodes associées, telles que la méthode extend dans jQuery et Underscore.
Ce qui suit utilise la méthode extend de Underscore pour obtenir le même résultat que ci-dessus :
var finalParams = _.extend(defaultParams, paramObject);
console.log(finalParams.param1,
finalParams.param2,
finalParams.param3);
>
// Sorties :
// "Ma propre chaîne" et "deuxième chaîne" et "troisième chaîne"
myFunc({param1 : "Ma propre chaîne"});
Voici comment obtenir les paramètres par défaut, dans les versions javascript actuelles.
Nous apprécions les critiques et la correction de toute inexactitude dans l’article.