„Optionen = Optionen || {}“ in JavaScript verstehen
Wenn Sie auf ein Codefragment wie „Optionen = Optionen || {}“ stoßen ;“, es wirft Fragen zur Funktionalität auf. Dieses Snippet wird häufig verwendet, um Standardwerte für Funktionsargumente festzulegen.
Der Kern dieses Ausdrucks liegt im logischen ODER-Operator (||). Dieser Operator wertet seine Operanden der Reihe nach aus und gibt den ersten wahrheitsgemäßen Wert zurück, auf den er trifft, oder den letzten Wert, wenn alle falsch sind. In diesem Fall wird zuerst „Optionen“ ausgewertet. Wenn „Optionen“ falsch ist (undefiniert, null, 0, „“ usw.), wird es als falsch ausgewertet und der Ausdruck wird zu „Optionen || {}“.
Das „{}“ ist ein JavaScript Objektliteral, das ein leeres Objekt darstellt. Wenn also „Optionen“ zunächst undefiniert ist, weist dieser Ausdruck der Variablen „Optionen“ ein leeres Objekt zu. Wenn „Optionen“ bereits vorhanden ist, stoppt die Auswertung, da „Optionen“ ein wahrer Wert ist.
Dieses Muster wird verwendet, um Funktionsargumente mit Standardwerten zu initialisieren, wenn sie als undefiniert übergeben werden. Zum Beispiel:
function test(options) { options = options || {}; }
Wenn diese Funktion ohne Argumente aufgerufen wird, wird „Optionen“ ein leeres Objekt zugewiesen. Wenn „Optionen“ explizit als undefiniert übergeben wird, nimmt es auch den Standardwert an.
ES6-Update
ES6 hat Standardparameterwerte eingeführt, wodurch dieser Ausdruck zum Festlegen von Standardwerten überflüssig wird . In ES6 können Sie Standardwerte mit der folgenden Syntax festlegen:
function test(options = {}) { //... }
Wenn „Optionen“ mit dieser Syntax als undefiniert übergeben oder explizit auf undefiniert gesetzt wird, nimmt es den Standardwert eines leeren Objekts an . Im Gegensatz zum || Operatormuster, andere falsche Werte lösen nicht die Verwendung des Standardwerts aus.
Das obige ist der detaillierte Inhalt vonWas macht \'options = options || {}\' in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!