wake-up-neo.com

JavaScript-Funktion mit optionalen Parametern

Ich bin neu in JavaScript aus Python Hintergrund. In Python können Parameter als Schlüssel und Wert als solche übergeben werden:

def printinfo( name, age = 35 ):
   print "Name: ", name
   print "Age ", age
   return;

Dann könnte die Funktion als solche aufgerufen werden:

printinfo( age=50, name="miki" )
printinfo( name="miki" )

Können solche Parameter in JavaScript-Funktionen übergeben werden?

Ich möchte einen oder mehrere Parameter übergeben können. Zum Beispiel eine JavaScript-Funktion als solche:

function plotChart(data, xlabel, ylabel, chart_type="l"){
    ...
} 

Ich möchte nur Daten und Diagrammtypen übergeben können, und Beschriftungen sind optional, z. B .:

plotChart(data, chart_type="pie")

Ist das mit JavaScript möglich?

5
codeBarer

Ein guter Weg, dies zu tun, wäre, ein Objekt für alle Argumente zu verwenden. So etwas wie:

function plotChart(options) {
  // Set defaults
  options.chart_type = options.chart_type || '1';

  // Check if each required option is set
  // Whatever is used by the data
}

Wenn dann die Funktion aufgerufen wird:

plotChart({
  data: 'some data',
  xlabel: 'some xlabel',
  ylabel: 'some ylabel',
  chart_type: '5' // This is optional
});
11
Sam

Eine Möglichkeit besteht darin, zu überprüfen, ob der Parameterwert undefined ist, und in diesem Fall einen Wert zuzuweisen.

function plotChart(data, xlabel, ylabel, chart_type) {
  if (typeof chart_type === 'undefined') {
     chart_type = 'l';
  }
} 

Auch EcmaScript 2016 (ES6) bietet Standardparameter . Da einige Browser diese Funktion noch nicht unterstützen, können Sie einen Transpiler wie babel verwenden, um den Code in ES5 zu konvertieren.

Damit es wie in Ihrem Python-Beispiel funktioniert, müssten Sie ein Objekt übergeben, das die Werte anstelle einzelner Parameter enthält.

function plotChart(options) {
    var data = options.data;
    var xlabel = options.xlabel;
    var ylabel = options.ylabel;
    var chart_type = (typeof options.chart_type === 'undefined' ? 'l' : options.chart_type);
}

Anwendungsbeispiel

plotChart({
  xlabel: 'my label',
  chart_type: 'pie'
});
6
Miguel Mota

Es gibt bereits eine Menge Antworten, aber ich habe nicht gesehen, was ich für die einfachste Lösung hielt.

var myFunc = function(param1) {
    var someData = param1 || "defaultValue";
}
3
Sinistralis

Sie können überprüfen, ob Parameter definiert sind, und diese in Ihre Funktionen einbinden.

z.B.

 var preDefined = function(param) { 
    if(param === undefined) { 
        param = preDefinedValue
     }
     /* Rest of code goes here */
 }

ETA:

ES6 ließ Standardparameterwerte zu (war mir nicht bewusst, als ich die Antwort veröffentlichte).

Verknüpfung

1
Mike