Je me demandais, pouvez-vous créer une fonction avec un paramètre facultatif?.
Exemple:
function parameterTest(test)
{
if exists(test)
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
Donc, si vous appelez parameterTest()
, le résultat sera un message "Le paramètre n'existe pas ...". Et si vous appelez parameterTest(true)
, il renverrait "le paramètre existe ...".
Est-ce possible?
C'est un schéma très fréquent.
Vous pouvez le tester en utilisant
function parameterTest(bool) {
if (bool !== undefined) {
Vous pouvez ensuite appeler votre fonction avec l’un de ces formulaires:
parameterTest();
parameterTest(someValue);
Attention à ne pas commettre l'erreur fréquente de test
if (!bool) {
Parce que vous ne pourriez pas différencier une valeur non fournie de false
, 0
ou ""
.
function parameterTest(bool)
{
if(typeof bool !== 'undefined')
{
alert('the parameter exists...');
}
else
{
alert('The parameter doesn\'t exist...');
}
}
En JavaScript, si vous omettez de spécifier un paramètre, la valeur par défaut est undefined
.
Vous pouvez l'essayer vous-même assez facilement, soit dans la console de votre navigateur, soit à l'aide de JSFiddle .
Vous pouvez vérifier l’existence du paramètre, comme vous dites, et écrire ainsi une fonction pouvant utiliser un paramètre ou non. Cependant, JavaScript Garden (une excellente ressource) recommande de rester loin de typeof
dans la plupart des autres cas, car sa sortie est presque inutile (consultez le tableau des résultats de typeof ).
meilleur moyen de vérifier: si le param n'est pas undefined
function parameterTest(param) {
if (param !== undefined)
...
le param peut aussi être une variable ou un nom de fonction
function parameterTest(p) {
if ( p === undefined)
alert('The parameter doesn\'t exist...');
else
alert('the parameter exists...');
}
null == undefined
est vrai
if (arg == null){
// arg was not passed.
}
Exemple de code:
var button = document.querySelector("button");
function myFunction(arg){
if(arg == null){
alert("argument was not passed.");
} else {
alert("argument " + arg + " was passed.");
}
}
<button onclick="myFunction('foo');">click to fire function w arg</button>
<br><br>
<button onclick="myFunction();">click to fire function w/o arg</button>