web-dev-qa-db-fra.com

Comment tester si un paramètre est fourni à une fonction?

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?

49
Guido Visser

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 "".

70
Denys Séguret
function parameterTest(bool)
{
   if(typeof bool !== 'undefined')
   {
     alert('the parameter exists...');
   }
   else
   {
     alert('The parameter doesn\'t exist...');
   }
}
10
Johan

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 ).

7
Johanna Larsson

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

4
ungalcrys
function parameterTest(p) {
    if ( p === undefined)
        alert('The parameter doesn\'t exist...');
    else
        alert('the parameter exists...');
}
1
manman

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>

0
Ron Royston