webentwicklung-frage-antwort-db.com.de

Wie kann man testen, ob ein Parameter für eine Funktion bereitgestellt wird?

Ich habe mich gefragt, können Sie eine Funktion mit einem optionalen Parameter erstellen.

Beispiel:

function parameterTest(test)
{
   if exists(test)
   {
     alert('the parameter exists...');
   }
   else
   {
     alert('The parameter doesn\'t exist...');
   }
}

Wenn Sie also parameterTest() aufrufen, würde das Ergebnis die Meldung "Der Parameter existiert nicht ..." sein. Wenn Sie parameterTest(true) aufrufen, wird "der Parameter ist vorhanden ..." zurückgegeben. 

Ist das möglich?

49
Guido Visser

Dies ist ein sehr häufiges Muster.

Sie können es mit testen

function parameterTest(bool) {
  if (bool !== undefined) {

Sie können Ihre Funktion dann mit einem dieser Formulare aufrufen:

 parameterTest();
 parameterTest(someValue);

Achten Sie darauf, dass Sie nicht häufig Fehler beim Testen machen

if (!bool) {

Sie können einen nicht bereitgestellten Wert nicht von false, 0 oder "" unterscheiden.

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

Wenn Sie in JavaScript keinen Parameter angeben, wird standardmäßig undefined verwendet.

Sie können es einfach selbst ausprobieren, entweder in Ihrer Browserkonsole oder mit JSFiddle .

Sie können die Existenz des Parameters überprüfen, wie Sie sagen, und auf diese Weise eine Funktion schreiben, die einen Parameter verwenden kann oder nicht. In JavaScript Garden (eine großartige Ressource) wird jedoch empfohlen, in den meisten anderen Fällen von typeof abzuweichen, da seine Ausgabe nahezu nutzlos ist (siehe Tabelle der Ergebnisse von typeof ).

7
Johanna Larsson

der beste Weg, um zu überprüfen: Wenn der param nicht undefined ist

function parameterTest(param) {
    if (param !== undefined)
    ...

das param könnte auch eine Variable oder ein Funktionsname sein

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

null == undefined ist wahr

if (arg == null){
    // arg was not passed.
}

Code-Beispiel:

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