Y a-t-il un moyen pour permettre à vars « illimité » pour une fonction en JavaScript ?
Exemple :
Y a-t-il un moyen pour permettre à vars « illimité » pour une fonction en JavaScript ?
Exemple :
Je suis d'accord avec Ken réponse comme étant la plus dynamique et j'aime faire un pas de plus. Si c'est une fonction que vous appelez plusieurs fois avec des arguments - je utiliser Ken le design, mais ensuite ajouter des valeurs par défaut:
function load(context) {
var defaults = {
parameter1: defaultValue1,
parameter2: defaultValue2,
...
};
var context = extend(defaults, context);
// do stuff
}
De cette façon, si vous avez beaucoup de paramètres, mais n'avez pas nécessairement besoin de les mettre à chaque appel de la fonction, vous pouvez simplement spécifier le non-valeurs par défaut. Pour étendre la méthode, vous pouvez utiliser jQuery étendre la méthode ($.extend()
), de l'artisanat, de votre propre ou utilisez la commande suivante:
function extend() {
for (var i = 1; i < arguments.length; i++)
for (var key in arguments[i])
if (arguments[i].hasOwnProperty(key))
arguments[0][key] = arguments[i][key];
return arguments[0];
}
Cela permettra de fusionner le contexte de l'objet avec les paramètres par défaut et compléter toutes les valeurs non définies dans votre objet avec les paramètres par défaut.
Même si je suis généralement d'accord que les arguments nommés approche est utile et flexible (à moins que vous vous souciez de la commande, auquel cas arguments est plus facile), j'ai des inquiétudes concernant le coût de la mbeasley approche (à l'aide de valeurs par défaut et s'étend). C'est une quantité extrême de coût à prendre pour tirer les valeurs par défaut. Tout d'abord, les valeurs par défaut sont définies à l'intérieur de la fonction, de sorte qu'ils sont à nouveau remplies à chaque appel. Deuxièmement, vous pouvez facilement lire le nom des valeurs et de définir les valeurs par défaut dans le même temps à l'aide de ||. Il n'est pas nécessaire de créer et de fusion encore un autre nouvel objet pour obtenir cette information.
function load(context) {
var parameter1 = context.parameter1 || defaultValue1,
parameter2 = context.parameter2 || defaultValue2;
// do stuff
}
C'est à peu près la même quantité de code (peut-être un peu plus), mais ce devrait être une fraction du coût d'exécution.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.