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?
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
});
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'
});
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";
}
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).