Maison >interface Web >js tutoriel >Explication détaillée des paramètres par défaut dans les connaissances Javascript_Basic

Explication détaillée des paramètres par défaut dans les connaissances Javascript_Basic

WBOY
WBOYoriginal
2016-05-16 16:33:151119parcourir

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 :

Copier le code Le code est le suivant :

function myFunc(param1, param2 = "seconde chaîne") {
console.log(param1, param2);
>

// 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 :

Copier le code Le code est le suivant :

fonction myFunc(param1, param2) {
Si (param2 === non défini) {
         param2 = "deuxième chaîne";
>

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.

Copier le code Le code est le suivant :

fonction myFunc(paramObject) {
var defaultParams = {
         param1 : "première chaîne",
         param2 : "deuxième chaîne",
         param3 : "troisième chaîne"
};

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 :

Copier le code Le code est le suivant :

fonction myFunc(paramObject) {
var defaultParams = {
         param1 : "première chaîne",
         param2 : "deuxième chaîne",
         param3 : "troisième chaîne"
};

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.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn