2010-09-07 5 views
3

En PHP, nous pouvons spécifier la valeur par défaut de la variable en fonction comme:fonction requise et les variables non nécessaires

function myFunction(myDefaultVariable, myOtherVariable, myCheckVariable = "basic"){ 
    // so yeah, myDefaultVariable is required always, 
    // same applies for myOtherVariable, 
    // and myCheckVariable can be skipped in function call, because it has a default value already specified. 
} 

Y at-il quelque chose de semblable à cela en JavaScript?

Répondre

8

Vous n'avez pas besoin de passer toutes les variables en Javascript.

Bien qu'une façon moins hacky serait d'utiliser des objets:

function foo(args) { 
    var text = args.text || 'Bar'; 

    alert(text); 
} 

Pour l'appeler:

foo({ text: 'Hello' }); // will alert "Hello" 
foo(); // will alert "Bar" as it was assigned if args.text was null 
+0

Vous passez essentiellement un seul argument: un objet avec les propriétés qui correspondent à des « arguments, je ne comprends bien – Piskvor

+0

Ah, merci exactement ce que je cherchais – jolt

+0

@Piskvor - oui bon?!. C'est un argument unique qui contient des attributs auxquels vous pouvez accéder.Tout d'entre eux peut être nul, il est donc important de vérifier et de ne pas supposer qu'ils ont été spécifiés.Pour les arguments 'obligatoires', je vérifie souvent s'ils sont fournis en haut de la méthode et lancer une exception sinon. 'if (! ('argument' dans args)) throw ('argument est un paramètre obligatoire');' –

4

pas exactement, mais vous pouvez simuler en vérifiant si une valeur a été adoptée et mise en un défaut, par exemple

optionalArg = (typeof optionalArg == "undefined")?'defaultValue':optionalArg 

Notez que la technique comme celui-ci fonctionne même lorsque optionalArg est fourni, mais évalue aussi faux - quelque chose qu'un langage plus simple comme optionalArg=optionalArg || 'default' échoue sur.

Toujours dans chaque fonction, vous pouvez accéder à un tableau appelé arguments qui contiendra tous les arguments passés à la fonction, vous pouvez utiliser cela pour avoir des fonctions avec des listes d'arguments de longueur variable.

1

Pas que je suis au courant:

Mais il y a 2 façons d'aborder ce sujet.

//1. function.arguments - this is advisable if you don't know the 
// maximum number of passed arguments. 

function foo() { 
    var argv = foo.arguments; 
    var argc = argv.length; 
    for (var i = 0; i < argc; i++) { 
    alert("Argument " + i + " = " + argv[i]); 
    } 
} 

foo('hello', 'world'); 

//2. "Or" operator - this is good for functions where you know the 
// details of the optional variable(s). 

function foo (word1, word2) { 
    word2 = word2 || 'world'; 
    alert (word1 + ' ' + word2); 
} 

foo ('hello'); // Alerts "hello world" 
Questions connexes