2651 Stimmen

Einen Standardparameterwert für eine JavaScript-Funktion festlegen

Ich möchte eine JavaScript-Funktion, um optionale Argumente, die ich einen Standard auf, die verwendet werden, wenn der Wert nicht definiert ist (und ignoriert, wenn der Wert übergeben wird). In Ruby kann man das so machen:

def read_file(file, delete_after = false)
  # code
end

Funktioniert das auch in JavaScript?

function read_file(file, delete_after = false) {
  // Code
}

8voto

Steven Johnston Punkte 1564

An alle, die daran interessiert sind, dass ihr Code in Microsoft Edge funktioniert, verwenden Sie keine Standardwerte in Funktionsparametern.

function read_file(file, delete_after = false) {
    #code
}

In diesem Beispiel gibt Edge einen Fehler aus: "Expecting ')'".

Um dies zu umgehen, verwenden Sie

function read_file(file, delete_after) {
  if(delete_after == undefined)
  {
    delete_after = false;
  }
  #code
}

Seit dem 08. August 2016 ist dies immer noch ein Problem.

7voto

Willem van der Veen Punkte 26043

Wenn Sie Folgendes verwenden ES6+ können Sie die Standardparameter auf folgende Weise einstellen:

function test (foo = 1, bar = 2) {
  console.log(foo, bar);
}

test(5); // foo gets overwritten, bar remains default parameter

Wenn Sie ES5 Syntax können Sie auf folgende Weise vorgehen:

function test(foo, bar) {
  foo = foo || 2;
  bar = bar || 0;

  console.log(foo, bar);
}

test(5); // foo gets overwritten, bar remains default parameter

In der obigen Syntax wird die OR Operator verwendet wird. Die Website OR Operator gibt immer den ersten Wert zurück, wenn dieser in einen anderen Wert umgewandelt werden kann. true wenn nicht, wird der Wert auf der rechten Seite zurückgegeben. Wenn die Funktion ohne ein entsprechendes Argument aufgerufen wird, wird die Parametervariable ( bar in unserem Beispiel) wird eingestellt auf undefined durch die JS-Engine. undefined wird dann in "false" umgewandelt und macht so die OR Operator den Wert 0 zurück.

6voto

Angel Politis Punkte 10443

ES6: Wie bereits in den meisten Antworten erwähnt, können Sie in ES6 einfach einen Parameter zusammen mit einem Wert initialisieren.


ES5: Die meisten der gegebenen Antworten sind für mich nicht gut genug, denn es gibt Fälle, in denen ich falsche Werte angeben muss, wie z. B. 0 , null y undefined zu einer Funktion. Um festzustellen, ob ein Parameter undefiniert ist, weil das der Wert ist, den ich übergeben habe, anstatt undefiniert, weil er überhaupt nicht definiert wurde, mache ich Folgendes:

function foo (param1, param2) {
   param1 = arguments.length >= 1 ? param1 : "default1";
   param2 = arguments.length >= 2 ? param2 : "default2";
}

6voto

Tính Ngô Quang Punkte 3750
function helloWorld(name, symbol = '!!!') {
    name = name || 'worlds';
    console.log('hello ' + name + symbol);
}

helloWorld(); // hello worlds!!!

helloWorld('john'); // hello john!!!

helloWorld('john', '(>.<)'); // hello john(>.<)

helloWorld('john', undefined); // hello john!!!

helloWorld(undefined, undefined); // hello worlds!!!

6voto

BlackBeard Punkte 9394

Verwenden Sie dies, wenn Sie die neuesten ECMA6 Syntax:

function myFunction(someValue = "This is DEFAULT!") {
  console.log("someValue --> ", someValue);
}

myFunction("Not A default value") // calling the function without default value
myFunction()  // calling the function with default value

Sie heißt default function parameters . Sie ermöglicht die Initialisierung von Formalparametern mit Standardwerten, wenn kein Wert oder ein undefinierter Wert übergeben wird. NOTE : Es funktioniert nicht mit Internet Explorer oder älteren Browsern.

Für maximal mögliche Kompatibilität dies verwenden:

function myFunction(someValue) {
  someValue = (someValue === undefined) ? "This is DEFAULT!" : someValue;
  console.log("someValue --> ", someValue);
}

myFunction("Not A default value") // calling the function without default value
myFunction()  // calling the function with default value

Beide Funktionen verhalten sich exakt gleich, da jedes dieser Beispiele auf der Tatsache beruht, dass die Parametervariable undefined wenn beim Aufruf dieser Funktion kein Parameterwert übergeben wurde.

1 Stimmen

HINWEIS: wie @BlackBeard sagt, funktioniert function(param=value) NICHT mit IE. Verwenden Sie die kompatible Version.

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