Kann ich Standardparameter deklarieren wie
function myFunc( a, b=0)
{
// b is my optional parameter
}
in JavaScript?
Kann ich Standardparameter deklarieren wie
function myFunc( a, b=0)
{
// b is my optional parameter
}
in JavaScript?
Mit ES6: Dies ist jetzt Teil der Sprache :
function myFunc(a, b = 0) {
// function body
}
Bitte beachten Sie, dass ES6 die Werte gegen undefined
und nicht gegen Wahrheitsgehalt (so dass nur echte undefinierte Werte den Standardwert erhalten - falsche Werte wie null werden nicht standardmäßig verwendet).
Mit ES5:
function myFunc(a,b) {
b = b || 0;
// b will be set either to b or to 0.
}
Dies funktioniert, solange alle Werte, die Sie explizit eingeben, wahrheitsgemäß . Werte, die nicht der Wahrheit entsprechen, wie in MiniGods Kommentar: null, undefined, 0, false, ''
Es ist ziemlich üblich, dass JavaScript-Bibliotheken eine Reihe von Prüfungen für optionale Eingaben durchführen, bevor die Funktion tatsächlich beginnt.
Mit ES6 ist dies auf genau die von Ihnen beschriebene Weise möglich; eine detaillierte Beschreibung finden Sie in die Dokumentation .
Standardparameter in JavaScript können hauptsächlich auf zwei Arten implementiert werden:
function myfunc(a, b)
{
// use this if you specifically want to know if b was passed
if (b === undefined) {
// b was not passed
}
// use this if you know that a truthy value comparison will be enough
if (b) {
// b was passed and has truthy value
} else {
// b was not passed or has falsy value
}
// use this to set b to a default value (using truthy comparison)
b = b || "default value";
}
Der Ausdruck b || "default value"
wertet den Wert UND die Existenz von b
und gibt den Wert von "default value"
si b
entweder nicht existiert oder fehlerhaft ist.
Alternative Erklärung:
function myfunc(a)
{
var b;
// use this to determine whether b was passed or not
if (arguments.length == 1) {
// b was not passed
} else {
b = arguments[1]; // take second argument
}
}
Das besondere "Array" arguments
ist innerhalb der Funktion verfügbar; sie enthält alle Argumente, beginnend mit dem Index 0
a N - 1
(wobei N
ist die Anzahl der übergebenen Argumente).
Dies wird normalerweise verwendet, um eine unbekannte Anzahl optionaler Parameter (desselben Typs) zu unterstützen; die Angabe der erwarteten Argumente ist jedoch vorzuziehen!
Obwohl undefined
es nicht beschreibbar seit ES5 ist bekannt, dass einige Browser dies nicht erzwingen. Es gibt zwei Alternativen, die Sie verwenden können, wenn Sie darüber besorgt sind:
b === void 0;
typeof b === 'undefined'; // also works for undeclared variables
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.