ECMAScript Boolean-bewerker

Boolean-bewerker is erg belangrijk, omdat het programma taal mogelijk maakt om normaal te werken.

Er zijn drie soorten Boolean-bewerker: NOT, AND en OR.

ToBoolean-operatie

Voor we verschillende logische bewerkingssymbolen leren, laten we eerst de ToBoolean-operatie beschreven in de ECMAScript-262 v5-norm leren.

De abstracte operatie ToBoolean converteert zijn parameters volgens de regels in onderstaande tabel:

Parameter type Resultaat
Undefined false
Null false
Boolean Het resultaat is gelijk aan het ingebrachte parameter (zonder conversie)
Number Als het parameter +0, -0 of NaN is, resulteert dit in false; anders in true.
String Als het parameter een lege string is, resulteert dit in false; anders in true.
Object true

Logische NOT-bewerker

In ECMAScript, the logical NOT operator is the same as the logical NOT operator in C and Java, both represented by the exclamation mark (!).

Unlike the logical OR and logical AND operators,The logical NOT operator always returns a Boolean value.

The behavior of the logical NOT operator is as follows:

  • If the operand is an object, returns false
  • If the operand is the number 0, returns true
  • If the operand is any number other than 0, returns false
  • If the operand is null, returns true
  • If the operand is NaN, returns true
  • If the operand is undefined, an error occurs

This operator is usually used to control loops:

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

In this example, the Boolean variable (bFound) is used to record whether the search is successful. When the data item in the problem is found, bFound is set to true, and !bFound equals false, which means the program will exit the while loop.

When checking the Boolean value of an ECMAScript variable, you can also use the logical NOT operator. To do this, you need to use two NOT operators in a single line of code. The first NOT operator returns a Boolean value regardless of the operand type. The second NOT inverts the Boolean value, thus giving the actual Boolean value of the variable.

var bFalse = false;
var sRed = "red";
var iZero = 0;
var iThreeFourFive = 345;
var oObject = new Object;
document.write("bFalse's logical value is " + (!!bFalse));
document.write("sRed's logical value is " + (!!sRed));
document.write("iZero's logical value is " + (!!iZero));
document.write("iThreeFourFive's logical value is " + (!!iThreeFourFive));
document.write("oObject's logical value is " + (!!oObject));

Resultaat:

De logische waarde van bFalse is false
De logische waarde van sRed is true
De logische waarde van iZero is false
De logische waarde van iThreeFourFive is true
De logische waarde van oObject is true 

Logische AND-betekenis

In ECMAScript wordt de logische AND-betekenis weergegeven met een dubbele en-teken (&&):

Bijvoorbeeld:

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

De waarheids tabel beschrijft het gedrag van de logische AND-betekenis:

Operand 1 Operand 2 Resultaat
true true true
true false false
false true false
false false false

De operands van de logische AND-vergelijking kunnen van elk type zijn, niet alleen Boolean-waarden.

Als een operand geen oorspronkelijke Boolean-waarde is, retourneert de logische AND-vergelijking niet noodzakelijkerwijs een Boolean-waarde:

  • Retourneert het object als een operand een Boolean-waarde is en de andere een object.
  • Retourneert de tweede object als beide operands objecten zijn.
  • Retourneert null als een operand null is.
  • Retourneert NaN als een operand NaN is.
  • Als een operand undefined is, treedt er een fout op.

Net als de logische AND-vergelijking in Java, is de logische AND-vergelijking in ECMAScript een eenvoudige operatie, namelijk als de eerste operand de uitkomst bepaalt, wordt de tweede operand niet meer berekend. Voor de logische AND-vergelijking, als de eerste operand false is, kan de uitkomst nooit true zijn ongeacht de waarde van de tweede operand.

Overweeg het volgende voorbeeld:

var bTrue = true;
var bResult = (bTrue && bUnknown); // Er ontstaat een fout
alert(bResult); // Deze regel wordt niet uitgevoerd

Deze code zal een fout veroorzaken tijdens de logische AND-vergelijking omdat de variabele bUnknown undefined is. De waarde van de variabele bTrue is true omdat de logische AND-vergelijking verder berekend wordt met de variabele bUnknown. Dit veroorzaakt een fout omdat de waarde van bUnknown undefined is en niet kan worden gebruikt in een logische AND-vergelijking.

Als je deze voorbeeldcode aanpast door het eerste getal op false in te stellen, zal er geen fout optreden:

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

In deze code zal het script de waarde van de logische AND-vergelijking retourneren, namelijk de string "false". Zelfs als de waarde van de variabele bUnknown undefined is, wordt deze niet berekend, omdat de waarde van het eerste operand false is.

Tip:Bij het gebruik van de logische AND-operator moet je onthouden dat het een eenvoudige berekening is.

Logische OR-operator

De logische OR-operator in ECMAScript is hetzelfde als in Java en wordt weergegeven met dubbele streepjes (||):

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

De volgende waarheidstabel beschrijft het gedrag van de logische OR-operator:

Operand 1 Operand 2 Resultaat
true true true
true false true
false true true
false false false

Net als de logische AND-operator, hoeft de logische OR-operatie niet altijd een Boolean-waarde te retourneren als een operand geen Boolean-waarde is:

  • Als een operand een object is en alle operanden links van het object false zijn, wordt het object geretourneerd.
  • Als beide operanden objecten zijn, wordt het eerste object geretourneerd.
  • Als de laatste operand null is en alle andere operanden false zijn, wordt null geretourneerd.
  • Als de laatste operand NaN is en alle andere operanden false zijn, wordt NaN geretourneerd.
  • Als een operand undefined is, treedt er een fout op.

Net als de logische AND-operator is de logische OR-operatie een eenvoudige berekening. Voor de logische OR-operator wordt de tweede operand niet meer berekend als de eerste operand true is.

Bijvoorbeeld:

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

Net als in het vorige voorbeeld is de variabele bUnknown niet gedefinieerd. Omdat de waarde van bTrue true is, wordt bUnknown niet berekend, dus wordt "true" weergegeven.

Als bTrue wordt veranderd in false, treedt er een fout op:

var bFalse = false;
var bResult = (bFalse || bUnknown);	// Er treedt een fout op
alert(bResult);			// Deze regel wordt niet uitgevoerd