ECMAScript Boolean operators

Boolean operators are very important as they make the program language run smoothly.

There are three types of Boolean operators: NOT, AND, and OR.

ToBoolean operation

Before learning various logical operators, let's first understand the ToBoolean operation described in the ECMAScript-262 v5 specification.

The abstract operation ToBoolean converts its parameters according to the rules in the following table:

Parameter type Bunga
Undefined false
Null false
Boolean The result is equal to the input parameter (without conversion)
Number If the parameter is +0, -0, or NaN, the result is false; otherwise, it is true.
String If the parameter is an empty string, the result is false; otherwise, it is true.
Object true

Logical NOT operator

Sa ECMAScript, ang logical NOT operator ay katulad ng logical NOT operator sa C at Java, na binibigyang ng simbolo na tanda ng exclamasyon (!).

Hindi katulad ng logical OR at logical AND operator,Ang logical NOT operator ay ibibigay lamang ang Boolean na halaga..

Ang pagiging kahulugan ng logical NOT operator ay tulad na:

  • Kung ang argumento ay object, ibibigay ang false
  • Kung ang argumento ay bilang 0, ibibigay ang true
  • Kung ang argumento ay anumang bilang kung hindi 0, ibibigay ang false
  • Kung ang argumento ay null, ibibigay ang true
  • Kung ang argumento ay NaN, ibibigay ang true
  • Kung ang argumento ay undefined, mangyayari ang error

Karaniwang ginagamit ang operator na ito upang kontrolin ang loop:

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

Sa katulad na ekemplo, ang Boolean variable (bFound) ay ginagamit upang talaan kung nagtagumpay ang paghahanap. Kapag natagpuan ang data item sa problema, ang bFound ay ibibigay ang halaga ng true, at !bFound ay magiging false, na nangangahulugan na ang paglulunsad ay lilisan ng while loop.

Kapag pinaghihinalaang ang Boolean na halaga ng ECMAScript na variable, maaaring gamitin din ang logical NOT operator. Para sa ganitong bagay, kailangan gamitin ang dalawang NOT operator sa isang linya ng code. Ang unang NOT operator ay ibibigay ang Boolean na halaga, at ang ikalawang NOT operator ay nagbibigay ng negation ng Boolean na halaga ng variable.

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));

Resulta:

Ang logic value ng bFalse ay false
Ang logic value ng sRed ay true
Ang logic value ng iZero ay false
Ang logic value ng iThreeFourFive ay true
Ang logic value ng oObject ay true 

Ang operatoryo ng logic AND

Sa ECMAScript, ang operatoryo ng logic AND ay ginagamit ng dual ampersand (&&):

Halimbawa:

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

Ang tabing katotohanan ng logic AND na operasyon na ito ay naglalarawan ng pag-uugali ng operatoryo na AND:

Operator 1 Operator 2 Bunga
true true true
true false false
false true false
false false false

Ang operando ng logic AND na operasyon ay maaaring maging anumang uri ng type, hindi lamang ang Boolean value.

Kung ang anumang operando ay hindi orihinal na Boolean value, ang logic AND na operasyon ay hindi siguradong ibabalik ang Boolean value:

  • Kung ang anumang operando ay object, at ang iba ay Boolean value, ibabalik ang object na iyon.
  • Kung ang dalawang operando ay object, ibabalik ang ikalawang object.
  • Kung ang anumang operando ay null, ibabalik ang null.
  • Kung ang anumang operando ay NaN, ibabalik ang NaN.
  • Kung ang anumang numero ng pagkilos ay undefined, magkakaroon ng error.

Katulad ng logic AND na operasyon sa Java, ang logic AND na operasyon sa ECMAScript ay isang madaling operasyon, na kung ang unang operando ay nagpasya sa resulta, ay hindi na magkakalulutas ang ikalawang operando. Para sa logic AND na operasyon, kung ang unang operando ay false, ang resulta ay hindi puwedeng maging true kahit anong halaga ang ikalawang operando.

Isasaalang-alang ang sumusunod na halimbawa:

var bTrue = true;
var bResult = (bTrue && bUnknown);	//magiging error
alert(bResult);			//ang linya na ito ay hindi nasasagawa

Ang kodigo na ito ay magbibigay ng error sa paggamit ng logic AND na operasyon, dahil ang variable na bUnknown ay undefined. Ang halaga ng variable na bTrue ay true, dahil ang logic AND na operasyon ay magpatuloy sa pagkakalulutas ng variable na bUnknown. Ganoon ang magiging error, dahil ang halaga ng bUnknown ay undefined, hindi ito puwedeng gamitin sa logic AND na operasyon.

Kung baguhin itong halimbawa, ilagay ang unang numero sa false, ay hindi magkakaroon ng error:

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

Sa kasabing kodigo, ang script ay maglalabas ng halaga ng logic AND na operasyon, na ang string "false". Kahit ang halaga ng variable na bUnknown ay undefined, hindi ito ay magkakalulutas, dahil ang halaga ng unang operando ay false.

Mga tagubilin:Kapag ginagamit ang logical AND operator, dapat alalahanin ang kanyang katangian ng madaling pagkilos.

Logical OR operator

Ang logical OR operator sa ECMAScript ay katulad ng sa Java, lahat ay inilalarawan ng dalawang patong (||):

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

Ang sumusunod na truth table ay naglalarawan ng pag-uugali ng logical OR operator:

Operator 1 Operator 2 Bunga
true true true
true false true
false true true
false false false

Katulad ng logical AND operator, kung ang anumang numero ng pagkilos ay hindi Boolean value, ang logical OR operator ay hindi nasisiguro na ibabalik ang Boolean value:

  • Kung ang anumang numero ng pagkilos ay object, at ang lahat ng numero ng pagkilos sa kanyang kaliwa ay false, ibabalik ang object na iyon.
  • Kung ang dalawang numero ng pagkilos ay parehong object, ibabalik ang unang object.
  • Kung ang huling numero ng pagkilos ay null, at ang ibang numero ng pagkilos ay lahat ay false, ibabalik ang null.
  • Kung ang huling numero ng pagkilos ay NaN, at ang ibang numero ng pagkilos ay lahat ay false, ibabalik ang NaN.
  • Kung ang anumang numero ng pagkilos ay undefined, magkakaroon ng error.

Katulad ng logical AND operator, ang logical OR operator ay madaling pagkilos. Para sa logical OR operator, kung ang unang numero ng pagkilos ay true, hindi na ito magtutuos sa ikalawang numero ng pagkilos.

Halimbawa:

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

Kasama ng nakaraang halimbawa, ang variable na bUnknown ay hindi tinukoy. Gayunpaman, dahil ang halaga ng variable na bTrue ay true, ang bUnknown ay hindi nasusuri, kaya ang output ay "true".

Kung ibahin ang bTrue sa false, magkakaroon ng error:

var bFalse = false;
var bResult = (bFalse || bUnknown);	//Mayroon error
alert(bResult);			//Hindi ito gagawin