Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum geben logische Operatoren in JavaScript manchmal nicht-boolesche Werte zurück?

Susan Sarandon
Freigeben: 2024-11-18 03:01:02
Original
201 Leute haben es durchsucht

Why Do Logical Operators in JavaScript Sometimes Return Non-Boolean Values?

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._ = {});
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage