Den Rückgabewert logischer Operatoren verstehen
In JavaScript sind die logischen Operatoren && (logisches UND) und || (logisches ODER) sind dafür bekannt, boolesche Ergebnisse zurückzugeben. Unter bestimmten Umständen können sie jedoch überraschenderweise nicht-boolesche Werte zurückgeben. Diese Anomalie entsteht durch den zugrunde liegenden Auswertungsprozess dieser Operatoren.
Logische Kurzschlussoperatoren
Das Hauptmerkmal von && und || liegt in ihrem Verhalten als logische Kurzschlussoperatoren. Wenn Sie einen Ausdruck mit diesen Operatoren auswerten, werten sie zuerst ihr linkes Argument aus.
Auswerten || (Logisches ODER)
Wenn im Fall von || das linke Argument einen vollständig bestimmten logischen Wert (wahr oder falsch) ergibt, wird das Ergebnis zurückgegeben, ohne dass das rechte Argument ausgewertet wird Argument. Dies geschieht, weil das logische Ergebnis bereits bestimmt wurde.
Auswerten von && (Logisches UND)
Ähnlich wie || wertet && zuerst das linke Argument aus. Wenn jedoch das linke Argument „falsch“ ergibt, gibt der Ausdruck „falsch“ zurück, ohne das rechte Argument auszuwerten. Dies liegt daran, dass für && beide Argumente wahr sein müssen, damit der Ausdruck wahr ist.
Den Rückgabewert verstehen
Wenn ein logischer Ausdruck als wahr ausgewertet wird, sind beide && und || gibt das linke Argument selbst zurück. Dies liegt daran, dass in JavaScript jeder Ausdruck, der einen nicht-booleschen Wert ergibt, als wahr behandelt wird.
Wenn jedoch das linke Argument als falsch ausgewertet wird, wird der ursprüngliche Ausdruck als falsch ausgewertet. In JavaScript-Version 1.2 und höher wird der Ausdruck selbst als Ergebnis zurückgegeben. Dieses Verhalten ermöglicht die Verkettung logischer Operationen, ohne dass explizite ternäre Operatoren erforderlich sind.
Beispiel:
Betrachten Sie den folgenden Code:
var _ = (obj.fn && obj.fn()) || obj._ || (obj._ = {});
Wenn in diesem Beispiel obj.fn definiert ist und einen wahrheitsgetreuen Wert zurückgibt, wird der Ausdruck obj.fn zurückgegeben. Wenn obj.fn nicht definiert ist, wird der Ausdruck als falsch ausgewertet, was das rechte Argument obj._ || verursacht (obj._ = {}), auszuwerten und zurückzugeben.
Das obige ist der detaillierte Inhalt vonWarum geben logische Operatoren in JavaScript manchmal nicht-boolesche Werte zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!