864 Stimmen

Gibt es eine bessere Möglichkeit, optionale Funktionsparameter in JavaScript zu verwenden?

Ich habe optionale Parameter in JavaScript immer wie folgt behandelt:

function myFunc(requiredArg, optionalArg){
  optionalArg = optionalArg || 'defaultValue';

  // Do stuff
}

Gibt es einen besseren Weg, dies zu tun?

Gibt es Fälle, in denen die Verwendung von || wie das scheitern wird?

10 Stimmen

6 Stimmen

Das ist interessant. Übergabe Argumente als ein assoziatives Array scheint ein guter Weg, um mehr als ein paar Argumente zu behandeln.

1 Stimmen

Das ist genau das, was ich in den meisten Fällen tue. Meine Funktionen mit mehr als einem Argument erwarten ein Objektliteral.

0voto

Mmmh mmh Punkte 5128

Diese sind kürzer als die Version des typeof-Operators.

function foo(a, b) {
    a !== undefined || (a = 'defaultA');
    if(b === undefined) b = 'defaultB';
    ...
}

-1voto

zVictor Punkte 3398

Ich empfehle Ihnen die Verwendung von ArgueJS auf diese Weise:

function myFunc(){
  arguments = __({requiredArg: undefined, optionalArg: [undefined: 'defaultValue'})

  //do stuff, using arguments.requiredArg and arguments.optionalArg
  //    to access your arguments

}

Sie können auch ersetzen undefined nach dem Typ des zu erwartenden Arguments, etwa so:

function myFunc(){
  arguments = __({requiredArg: Number, optionalArg: [String: 'defaultValue'})

  //do stuff, using arguments.requiredArg and arguments.optionalArg
  //    to access your arguments

}

0 Stimmen

Wird nicht mehr gepflegt.

-2voto

Dustin Poissant Punkte 2885
function foo(requiredArg){
  if(arguments.length>1) var optionalArg = arguments[1];
}

2 Stimmen

Korrigieren Sie den Tippfehler und fügen Sie eine Erklärung hinzu, was Sie hier empfehlen.

0 Stimmen

Ich glaube nicht, dass dies einer großen Erklärung bedarf, es beantwortet einfach die Frage. Es gibt viele Möglichkeiten, "optionale Funktionsparameter" in JavaScript zu realisieren. Ich habe hier 3 oder 4 andere gute Antworten gesehen, aber ich habe diese Antwort nicht gesehen, also habe ich sie gegeben. Es ist vielleicht nicht die einfachste oder direkteste Antwort, aber sie funktioniert.

0 Stimmen

Dies entspricht der Antwort von Roenving, enthält aber keinen Standardwert. Abgesehen davon gefällt mir die Lesbarkeit, optionale Args getrennt von den erforderlichen zu definieren: Wenn das der Zweck Ihrer Antwort ist, wäre es hilfreich, dies zu sagen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X