ECMAScript-Boolean-Operatoren

Boolean-Operatoren sind sehr wichtig, da sie die ordnungsgemäße Funktion der Programmiersprache ermöglichen.

Es gibt drei Arten von Boolean-Operatoren: NOT, AND und OR.

ToBoolean-Operation

Bevor wir uns mit verschiedenen logischen Operatoren vertraut machen, lassen Sie uns zunächst die ToBoolean-Operation, wie sie in der Spezifikation ECMAScript-262 v5 beschrieben ist, verstehen.

Die abstrakte Operation ToBoolean wandelt ihren Parameter gemäß den Regeln in der folgenden Tabelle in einen logischen Wert um:

Typ des Parameters Ergebnis
Undefined false
Null false
Boolean Das Ergebnis ist gleich dem Eingabeparameter (ohne Konvertierung)
Number Wenn der Parameter +0, -0 oder NaN ist, ergibt das Ergebnis false;否则为 true。
String Wenn der Parameter eine leere Zeichenkette ist, ergibt das Ergebnis false;否则为 true。
Object true

Logischer NOT-Operator

In ECMAScript ist der logische NOT-Operator mit demjenigen in C und Java identisch und wird durch den Ausrufezeichen (!) dargestellt.

Im Gegensatz zu den logischen OR- und AND-Operatoren:Der logische NOT-Operator gibt immer einen Boolean-Wert zurück.

Das Verhalten des logischen NOT-Operators ist wie folgt:

  • Wenn der Operand ein Objekt ist, wird false zurückgegeben
  • Wenn der Operand die Zahl 0 ist, wird true zurückgegeben
  • Wenn der Operand eine Zahl außer null ist, wird false zurückgegeben
  • Wenn der Operand ein null ist, wird true zurückgegeben
  • Wenn der Operand ein NaN ist, wird true zurückgegeben
  • Wenn der Operand ein undefined ist, tritt ein Fehler auf

Der Operator wird normalerweise zur Steuerung von Schleifen verwendet:

var bFound = false;
var i = 0;
while (!bFound) {
  if (aValue[i] == vSearchValues) {
    bFound = true;
  } else {
    i++;
  }
}

In diesem Beispiel wird die Boolean-Variablen (bFound) verwendet, um den Erfolg der Suche zu protokollieren. Wenn der Datenpunkt im Problem gefunden wird, wird bFound auf true gesetzt, !bFound ist dann false, was bedeutet, dass der Lauf des while-Schleifs beendet wird.

Bei der Beurteilung der Boolean-Werte von ECMAScript-Variablen kann auch der logische NOT-Operator verwendet werden. Dies erfordert die Verwendung von zwei NOT-Operatoren in einer Zeile. Der erste NOT-Operator gibt immer einen Boolean-Wert zurück, unabhängig vom Typ des Operanden. Der zweite NOT negiert diesen Boolean-Wert und gibt den tatsächlichen Boolean-Wert der Variable zurück.

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;
document.write("bFalse 的逻辑值是 " + (!!bFalse));
document.write("sRed 的逻辑值是 " + (!!sRed));
document.write("iZero 的逻辑值是 " + (!!iZero));
document.write("iThreeFourFive 的逻辑值是 " + (!!iThreeFourFive));
document.write("oObject 的逻辑值是 " + (!!oObject));

Ergebnis:

Die logische Wertigkeit von bFalse ist false
Die logische Wertigkeit von sRed ist true
Die logische Wertigkeit von iZero ist false
Die logische Wertigkeit von iThreeFourFive ist true
Die logische Wertigkeit von oObject ist true 

Logischer UND-Operator

In ECMAScript wird der logische UND-Operator durch das doppelte Und-Zeichen (&&) dargestellt:

Beispiel:

var bTrue = true;
var bFalse = false;
var bResult = bTrue && bFalse;

Die Wahrheitstabelle beschreibt das Verhalten des logischen UND-Operators:

Operand 1 Operand 2 Ergebnis
true true true
true false false
false true false
false false false

Die Operanden der logischen UND-Berechnung können alle Arten von Typen sein, nicht nur Boolean-Werte.

Wenn ein Operanden nicht ein ursprünglicher Boolean-Wert ist, wird die logische UND-Berechnung nicht unbedingt einen Boolean-Wert zurückgeben:

  • Wenn ein Operanden ein Objekt und der andere ein Boolean-Wert ist, wird das Objekt zurückgegeben.
  • Wenn beide Operanden Objekte sind, wird das zweite Objekt zurückgegeben.
  • Wenn ein Operanden null ist, wird null zurückgegeben.
  • Wenn ein Operanden NaN ist, wird NaN zurückgegeben.
  • Wenn ein Operand undefined ist, tritt ein Fehler auf.

Ähnlich wie der logische UND-Berechnung in Java ist die logische UND-Berechnung in ECMAScript eine einfache Berechnung, d.h. wenn der erste Operanden das Ergebnis bestimmt, wird der zweite Operanden nicht mehr berechnet. Für die logische UND-Berechnung ist es so, dass, wenn der erste Operanden false ist, das Ergebnis nie true sein kann, unabhängig vom Wert des zweiten Operanden.

Berücksichtigen Sie das folgende Beispiel:

var bTrue = true;
var bResult = (bTrue && bUnknown); // Fehler aufgetreten
alert(bResult); // Diese Zeile wird nicht ausgeführt

Dieser Code verursacht bei der logischen UND-Berechnung einen Fehler, da die Variable bUnknown nicht definiert ist. Der Wert von bTrue ist true, da die logische UND-Berechnung den Wert der Variable bUnknown weiter berechnet. Dies verursacht einen Fehler, da der Wert von bUnknown undefined ist und nicht für die logische UND-Berechnung verwendet werden kann.

Wenn Sie diesen Beispielcode ändern und den ersten Wert auf false setzen, wird kein Fehler auftreten:

var bFalse = false;
var bResult = (bFalse && bUnknown);
alert(bResult); // Ausgabe "false"

In diesem Codeabschnitt gibt das Skript den Wert des logischen UND-Berechnungsergebnisses aus, d.h. den String "false". Selbst wenn der Wert der Variable bUnknown undefined ist, wird sie nicht berechnet, da der Wert des ersten Operanden false ist.

Hinweis:Bei der Verwendung des logischen AND-Operators muss man sich an sein einfaches Berechnungsmerkmal erinnern.

Logischer OR-Operator

Der logische OR-Operator in ECMAScript ist wie in Java durch doppelte Pipe-Zeichen (||) dargestellt:

var bTrue = true;
var bFalse = false;
var bResult = bTrue || bFalse;

Die folgenden Wahrheitstafeln beschreiben das Verhalten des logischen OR-Operators:

Operand 1 Operand 2 Ergebnis
true true true
true false true
false true true
false false false

Wie der logische AND-Operator ähnlich, gibt der logische OR-Operator nicht unbedingt einen Boolean-Wert zurück, wenn ein Operand nicht ein Boolean-Wert ist:

  • Wenn ein Operand ein Objekt ist und alle Operanden links vom Objekt false sind, wird dieses Objekt zurückgegeben.
  • Wenn beide Operanden Objekte sind, wird das erste Objekt zurückgegeben.
  • Wenn der letzte Operand null ist und alle anderen Operanden false sind, wird null zurückgegeben.
  • Wenn der letzte Operand NaN ist und alle anderen Operanden false sind, wird NaN zurückgegeben.
  • Wenn ein Operand undefined ist, tritt ein Fehler auf.

Wie der logische AND-Operator ist auch der logische OR-Operator eine einfache Operation. Für den logischen OR-Operator wird der zweite Operand nicht berechnet, wenn der erste Operand true ist.

Beispiel:

var bTrue = true;
var bResult = (bTrue || bUnknown);
alert(bResult);			//Gibt "true" aus

Wie im vorherigen Beispiel ist die Variable bUnknown nicht definiert. Allerdings wird bUnknown nicht berechnet, da der Wert von bTrue true ist, daher wird "true" ausgegeben.

Wenn bTrue auf false geändert wird, wird ein Fehler auftreten:

var bFalse = false;
var bResult = (bFalse || bUnknown);	//Es wird ein Fehler aufgetreten
alert(bResult);			//Dieses Zeile wird nicht ausgeführt