wake-up-neo.com

Standardargumentwerte in JavaScript-Funktionen

Mögliches Duplikat:
Wie lege ich einen Standardwert für einen Parameter für eine Javascript-Funktion fest

in PHP:

function func($a = 10, $b = 20){
  // if func() is called with no arguments $a will be 10 and $ b  will be 20
}

Wie können Sie dies in JavaScript tun?

Ich erhalte eine Fehlermeldung, wenn ich versuche, Werte in Funktionsargumenten zuzuweisen

fehlt) nach formalen Parametern

221

In Javascript können Sie eine Funktion (auch wenn sie Parameter hat) ohne Parameter aufrufen.

So können Sie Standardwerte wie folgt hinzufügen:

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   //your code
}

und dann können Sie es wie func(); aufrufen, um Standardparameter zu verwenden.

Hier ist ein Test:

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   alert("A: "+a+"\nB: "+b);
}
//testing
func();
func(80);
func(100,200);
374
Ravan Scafi

ab ES2015:

Ab ES6/ES2015 haben wir Standardparameter in der Sprachspezifikation. So können wir einfach etwas tun, wie

function A(a, b = 4, c = 5) {
}

oder kombiniert mit ES2015 destructuring ,

function B({c} = {c: 2}, [d, e] = [3, 4]) {
}

Für eine detaillierte Erklärung

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters

Standardfunktionsparameter ermöglichen die Initialisierung von Formalparametern mit Standardwerten, wenn kein Wert oder undefiniert ist ist bestanden.

Vor ES2015:

Wenn Sie mit Werten umgehen möchten, die [~ # ~] nicht [~ # ~] Zahlen, Zeichenfolgen, Boolesche Werte, NaN oder null können Sie einfach verwenden

(Für Objekte, Arrays und Funktionen, die Sie niemals senden möchten, können Sie null verwenden.)

param || DEFAULT_VALUE

zum Beispiel,

function X(a) {
  a = a || function() {};
}

Obwohl dies einfach aussieht und irgendwie funktioniert, ist dies einschränkend und kann ein Anti-Muster sein, weil || bearbeitet alle falschen Werte ("", null, NaN, false, 0) also - was es dieser Methode unmöglich macht, einem Parameter den als Argument übergebenen falschen Wert zuzuweisen.

Um also nur undefined - Werte explizit zu behandeln, wäre der bevorzugte Ansatz:

function C(a, b) {
  a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
  b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
136
Boopathi Rajaa

Sie müssen überprüfen, ob das Argument undefiniert ist:

function func(a, b) {
    if (a === undefined) a = "default value";
    if (b === undefined) b = "default value";
}

Beachten Sie auch, dass diese Frage beantwortetvor .

12
jtbandes

Ich habe es in JavaScript noch nie so gesehen. Wenn Sie eine Funktion mit optionalen Parametern wünschen, denen Standardwerte zugewiesen werden, wenn die Parameter weggelassen werden, gehen Sie folgendermaßen vor:

 function(a, b) {
      if (typeof a == "undefined") {
        a = 10;
      }

      if (typeof b == "undefined") {
        a = 20;
      }

      alert("a: " + a + " b: " + b);
    }
5
tkahn
function func(a, b)
{
  if (typeof a == 'undefined')
    a = 10;
  if (typeof b == 'undefined')
    b = 20;
  // do what you want ... for example
  alert(a + ',' + b);
}

in Kurzschrift

function func(a, b)
{
  a = (typeof a == 'undefined')?10:a;
  b = (typeof b == 'undefined')?20:b;

  // do what you want ... for example
  alert(a + ',' + b);
}
4

Sie können keine Standardwerte für Funktionsparameter hinzufügen. Aber Sie können dies tun:

function tester(paramA, paramB){
 if (typeof paramA == "undefined"){
   paramA = defaultValue;
 }
 if (typeof paramB == "undefined"){
   paramB = defaultValue;
 }
}
0
evilone