Ich habe eine Funktion wie diese erstellt:
function saveItem(andClose = false) {
}
In Firefox funktioniert es einwandfrei
Im IE gibt es diesen Fehler auf der Konsole:
Expected ')'
In Chrome gibt es diesen Fehler in der Konsole:
Uncaught SyntaxError: Unexpected token =
Beide Browser markieren die Fehlerquelle als Funktionserstellungszeile.
javascript
jquery
Talon
quelle
quelle
Antworten:
Sie können dies nicht tun, aber Sie können stattdessen etwas tun wie:
Dies wird oft verkürzt auf:
Aktualisieren
Dies gilt für ECMAScript <= 5. ES6 hat Standardparameter vorgeschlagen . Das Obige könnte also stattdessen lauten:
quelle
name = name || 'Bob';
sollte nicht verwendet werden, da, wenn der Name auf einen Falsey-Wert gesetzt ist, der Standardwert anstelle des Namens verwendet wirdname = name || 'Bob'
Gebrauchname = (name === undefined) ? '' : name;
Dies ist keine gültige ECMAScript-Syntax, aber eine gültige Syntax für Mozillas Obermenge an Funktionen, die sie zur Implementierung der Sprache hinzufügen.
Die Standard-Syntax für die Parameterzuweisung wird wahrscheinlich in ECMAScript 6 verwendet.
quelle
foo = foo || "the default"
. Oder Sie können.length
dasarguments
Objekt überprüfen . Oder Sie können einfach jeden Parameter auf testenundefined
. Es gibt verschiedene Gelegenheiten, um jede zu verwenden.Javascript erlaubt keinen "Standard" -Spezifizierer.
Eine schnelle Möglichkeit, das zu tun, was Sie möchten, besteht darin, Folgendes zu ändern:
Zu dem Folgendem:
quelle
andClose
auf false gesetzt , es war 0 ... nicht ganz das, was ich erwarten würde ...var andClose = andClose === undefined? false: andClose;
Dadurch können Sie zur0
Funktion übergehen und diese nicht durch ersetzen lassenfalse
.Der von Ihnen angegebene Code wird in Chrome <Version 49 nicht ausgeführt: https://kangax.github.io/compat-table/es6/#test-default_function_parameters
Sie haben eine gültige ECMAScript 2015-Syntax verwendet:
Meiner Meinung nach besteht die beste Möglichkeit, ES2015-Funktionen zu verwenden, darin, Assets mit Browserify oder WebPack zu bündeln. Mit Babel können Sie ES2015 auf ES5 transkompilieren. Auf diese Weise müssen Sie sich keine Gedanken über die Kompatibilitätstabelle des ES2015-Browsers machen. Es ist ein Schmerz, beim ersten Mal loszulegen, aber es lohnt sich.
quelle
In Ihrem Fall haben Sie eine andere Alternative, um sicherzustellen, dass Ihre Variable ein Boolescher Wert ist:
Der Standardwert ist
undefined
undtrue == undefined
=>false
, Ihr Standardwert ist alsofalse
:)quelle
andClose
Variable bereits in diesem Bereich zugewiesen ist