ECMAScript Boolean-operatorer
- Föregående sida Bitsäkerhetsoperator
- Nästa sida Vipproperator
Boolean-operatorer är mycket viktiga och gör att programSpråk kan fungera korrekt.
Det finns tre typer av Boolean-operatorer: NOT, AND och OR.
ToBoolean-operation
Innan vi lär oss olika logiska operatorer, låt oss först lära oss ToBoolean-operationen som beskrivs i ECMAScript-262 v5-specifikationen.
Abstrakt operation ToBoolean konverterar sina parametrar enligt reglerna i följande tabell:
Parametertyp | Resultat |
---|---|
Undefined | false |
Null | false |
Boolean | Resultatet är lika med den inmatade parametern (inte konverterad) |
Number | Om parametern är +0, -0 eller NaN, är resultatet false; annars true. |
String | Om parametern är en tom sträng, är resultatet false; annars true. |
Object | true |
Logiskt NOT-operator
I ECMAScript är logisk NOT-operator samma som i C och Java, representerad av utropstecknet (!).
Skiljt från logiska OR- och AND-operatorer:Logisk NOT-operator returnerar alltid ett Boolean-värde.
Beteendet hos logisk NOT-operator är som följer:
- Om operanden är ett objekt returneras false
- Om operanden är talet 0 returneras true
- Om operanden är något annat än 0 returneras false
- Om operanden är null returneras true
- Om operanden är NaN returneras true
- Om operanden är undefined inträffar ett fel
Normalt används denna operator för att styra loopen:
var bFound = false; var i = 0; medan (!bFound) { om (aValue[i] == vSearchValues) { bFound = true; } annars { i++; } }
I detta exempel används Boolean-variabeln (bFound) för att registrera om sökningen är framgångsrik. När dataelementet i problemet hittas sätts bFound till true, !bFound blir false, vilket innebär att loopen avslutas.
När du bedömer ECMAScript-variablens Boolean-värde kan du också använda logisk NOT-operator. För att göra detta behöver du använda två NOT-operatorer på en rad. Oavsett vad operanden är, returnerar den första NOT-operatorn ett Boolean-värde. Den andra NOT-användningen tar negationen av det Boolean-värdet, vilket ger det verkliga Boolean-värdet för variabeln.
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));
Resultat:
bFalse:s logiska värde är false sRed:s logiska värde är true iZero:s logiska värde är false iThreeFourFive:s logiska värde är true oObject:s logiska värde är true
Logisk AND-operator
I ECMAScript representeras logisk AND-operatorn med dubbla och-tecken (&&):
Exempel:
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
Följande sanningsvärdes tabell beskriver beteendet för logisk AND-operatorn:
Beräkningsvärde 1 | Beräkningsvärde 2 | Resultat |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Operanden för logisk AND-operation kan vara vilket typ av värde som helst, inte bara Boolean-värden.
Om en operand inte är en ursprunglig Boolean-värdes typ, returneras inte nödvändigtvis ett Boolean-värde av logisk AND-operation:
- Om en operand är ett objekt och den andra är ett Boolean-värde, returneras det aktuella objektet.
- Om båda operanderna är objekt, returneras det andra objektet.
- Om någon operand är null, returneras null.
- Om någon operand är NaN, returneras NaN.
- Om någon beräkningsvärde är undefined inträffar ett fel.
Likt logisk AND-operation i Java är logisk AND-operation i ECMAScript också en enkel operation, vilket innebär att om det första operandens värde redan beslutar om resultatet, kommer den andra operanden inte att beräknas. För logisk AND-operation, om det första operandens värde är false, kommer resultatet inte att kunna vara true oavsett vad den andra operandens värde är.
Överväg följande exempel:
var bTrue = true; var bResult = (bTrue && bUnknown); //Fel inträffar alert(bResult); //Denna rad kommer inte att köras
Detta kodavsnitt kommer att kasta ett fel vid logisk AND-operation, eftersom variabeln bUnknown är undefined. Variabeln bTrue har värdet true, eftersom logisk AND-operation kommer att fortsätta beräkna variabeln bUnknown. Detta leder till ett fel eftersom bUnknown har värdet undefined och kan inte användas i en logisk AND-operation.
Om du ändrar detta exempel och sätter det första talet till false, kommer inget fel att inträffa:
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); //Visa "false"
I detta kodavsnitt kommer skriptet att visa värdet som returneras av logisk AND-operation, dvs. strängen "false". Även om variabeln bUnknown har värdet undefined kommer den inte att beräknas, eftersom det första operandens värde är false.
Tips:När du använder logisk AND-operator måste du komma ihåg dess egenskap att vara en enkel beräkning.
Logisk OR-operator
Logisk OR-operatorn i ECMAScript är samma som i Java och representeras av dubbla vertikala streck (||):
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
Följande sannhetsvärdestabell beskriver beteendet för logisk OR-operator:
Beräkningsvärde 1 | Beräkningsvärde 2 | Resultat |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Som med logisk AND-operator är det inte nödvändigtvis sant att logisk OR returnerar ett Boolean-värde om ett beräkningsvärde inte är ett Boolean-värde:
- Om ett beräkningsvärde är ett objekt och de andra beräkningsvärdena till vänster om objektet är false, returneras objektet.
- Om båda beräkningsvärdena är objekt returneras det första objektet.
- Om det sista beräkningsvärdet är null och de andra beräkningsvärdena är false, returneras null.
- Om det sista beräkningsvärdet är NaN och de andra beräkningsvärdena är false, returneras NaN.
- Om någon beräkningsvärde är undefined inträffar ett fel.
Som med logisk AND-operator är logisk OR också en enkel beräkning. För logisk OR-operator är det så att om den första beräkningsvärdet är true behöver den andra beräkningsvärdet inte beräknas.
Exempel:
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); //Output "true"
Liksom i föregående exempel är variabeln bUnknown inte definierad. Men eftersom variabeln bTrue har värdet true beräknas inte bUnknown, och utdata är "true".
Om du ändrar bTrue till false inträffar ett fel:
var bFalse = false; var bResult = (bFalse || bUnknown); //Ett fel inträffar alert(bResult); //Detta raden kommer inte att köras
- Föregående sida Bitsäkerhetsoperator
- Nästa sida Vipproperator