--- title: Logische Operatoren slug: >- conflicting/Web/JavaScript/Reference/Operators_8b4515dbed18a24ecb01bfe0755ca163 tags: - JavaScript - Logic - Logical Operators - Not - Operator - Reference - and - or translation_of: Web/JavaScript/Reference/Operators translation_of_original: Web/JavaScript/Reference/Operators/Logical_Operators original_slug: Web/JavaScript/Reference/Operators/Logische_Operatoren ---
Logische Operatoren werden typischerweise im Zusammenhang mit {{jsxref("Boolean")}} (logischen) Werten verwendet. Die Operatoren &&
(Logisches UND) und ||
(Logisches ODER) geben dabei den Wert von einem der Operanden zurück. Sind die Operanden mit nicht-booleschen Werten belegt, geben diese Operatoren entsprechend nicht-boolesche Werte zurück.
In der folgenden Tabelle werden die logischen Operatoren erläutert.
Operator | Verwendung | Beschreibung |
---|---|---|
Logisches UND (&& ) |
ausdruck1 && ausdruck2 |
Gibt ausdruck1 zurück, wenn er zu false konvertiert werden kann; anderfalls wird ausdruck2 zurückgegeben. Sind beide Operanden true , gibt && true zurück, Andernfalls false . |
Logisches ODER (|| ) |
ausdruck1 || ausdruck2 |
Gibt ausdruck1 zurück, wenn er zu true konvertiert werden kann; andernfalls wird ausdruck2 zurückgegeben. Ist einer der Operanden true , gibt || true zurück. |
Logisches NICHT (! ) |
!ausdruck |
Gibt false zurück, wenn der Operand zu true konvertiert werden kann. Andernfalls wird true zurückgegeben. |
Wenn ein Wert zu true
konvertiert werden kann, wird er {{Glossary("truthy")}} genannt. Wenn ein Wert zu false
konvertiert werden kann, wird er {{Glossary("falsy")}} genannt.
Beispiele für Ausdrücke, die zu false
konvertiert werden können:
null
0
""
oder ''
)undefined
Auch wenn die Operatoren &&
und ||
mit nichtbooleschen Operanden verwendet werden können, gehören sie trotzdem zur Gruppe der logischen Operatoren, da ihre Rückgabewerte immer zu booleschen Werten konvertiert werden können.
Logische Ausdrücke werden von links nach rechts ausgewertet und hierbei wird anhand der folgenden Regeln getestet, ob Kurzschlussauswertungen möglich sind:
false && (irgendwas)
wird kurzerhand zu false.true || (irgendwas)
wird kurzerhand zu true.Die Regeln der Logik garantieren, dass diese Auswertungen immer korrekt sind. Zu beachten ist, dass der irgendwas
Teil nicht ausgewertet wird, so dass keine Seiteneffekte die von diesem Teil ausgehen ausgeführt werden. Zu beachten ist zudem, dass der irgendwas
Teil ein einzelner Ausdruck ist (wie die Klammern anzeigen).
Beispielhaft betrachten wir die folgenden äquivalenten Funktionen:
function shortCircuitEvaluation() { // Logisches ODER (||) doSomething() || doSomethingElse(); // Logisches UND (&&) doSomething() && doSomethingElse(); } function equivalentEvaluation() { // Logisches ODER (||) var orFlag = doSomething(); if (!orFlag) { doSomethingElse(); } // Logisches UND (&&) var andFlag = doSomething(); if (andFlag) { doSomethingElse(); } }
Die folgenden Ausdrücke sind aufgrund der Operatorrangfolgen nicht äquivalent und betont, wie wichtig es ist, dass der rechte Operand ein einzelner Ausdruck ist (gruppiert, falls in Klammern erforderlich).
false && true || true // wird zu true false && (true || true) // wird zu false
&&
)Im Folgenden sind Beispiele des &&
(logisches UND) Operators zu sehen.
a1 = true && true // t && t wird zu true a2 = true && false // t && f wird zu false a3 = false && true // f && t wird zu false a4 = false && (3 == 4) // f && f wird zu false a5 = 'Cat' && 'Dog' // t && t wird zu "Dog" a6 = false && 'Cat' // f && t wird zu false a7 = 'Cat' && false // t && f wird zu false a8 = '' && false // f && f wird zu "" a9 = false && '' // f && f wird zu false
||
)Im Folgenden sind Beispiele des ||
(logisches ODER) Operators zu sehen.
o1 = true || true // t || t wird zu true o2 = false || true // f || t wird zu true o3 = true || false // t || f wird zu true o4 = false || (3 == 4) // f || f wird zu false o5 = 'Cat' || 'Dog' // t || t wird zu "Cat" o6 = false || 'Cat' // f || t wird zu "Cat" o7 = 'Cat' || false // t || f wird zu "Cat" o8 = '' || false // f || f wird zu false o9 = false || '' // f || f wird zu ""
!
)Im Folgenden sind Beispiele des !
(logisches NICHT) Operators zu sehen.
n1 = !true // !t wird zu false n2 = !false // !f wird zu true n3 = !"Cat" // !t wird zu false
Die folgende Operation nutzt Booleane:
bCondition1 && bCondition2
ist äquivalent zum folgenden Ausdruck:
!(!bCondition1 || !bCondition2)
Die folgende Operation nutzt Booleane:
bCondition1 || bCondition2
ist äquivalent zu folgendem Ausdruck:
!(!bCondition1 && !bCondition2)
Die folgende Operation nutzt Booleane:
!!bCondition
ist äquivalent mit:
bCondition
Ein logischer Ausdruck wird von links nach rechts ausgewertet. Es ist immer möglich runde Klammern von einem komplexen Ausdruck zu entfernen, wenn einige Regeln beachtet werden.
Die folgende Operation nutzt Booleane:
bCondition1 || (bCondition2 && bCondition3)
ist äquivalent mit:
bCondition1 || bCondition2 && bCondition3
Die folgende Operation nutzt Booleane:
bCondition1 && (bCondition2 || bCondition3)
ist äquivalent mit:
!(!bCondition1 || !bCondition2 && !bCondition3)
Spezifikation | Status | Kommentar |
---|---|---|
{{SpecName('ES1')}} | {{Spec2('ES1')}} | Initiale Definition. |
{{SpecName('ES5.1', '#sec-11.11')}} | {{Spec2('ES5.1')}} | Definiert in mehreren Kapiteln der Spezifikation: Logical NOT Operator, Binary Logical Operators |
{{SpecName('ES6', '#sec-binary-logical-operators')}} | {{Spec2('ES6')}} | Definiert in mehreren Kapiteln der Spezifikation: Logical NOT Operator, Binary Logical Operators |
{{SpecName('ESDraft', '#sec-binary-logical-operators')}} | {{Spec2('ESDraft')}} | Definiert in mehreren Kapiteln der Spezifikation: Logical NOT Operator, Binary Logical Operators |
{{Compat("javascript.operators.logical")}}