ECMAScript Boolean operators
- baya na farko mu'amalai bayan
- baya na kwanan nan mu'amalai kuma
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.
Abstract operation ToBoolean converts its parameters according to the rules in the table below:
Tasi a ciki ne | sabonin |
---|---|
Undefined | false |
Null | false |
Boolean | Hoto a ciki ne yaua (ko dama aya) |
Number | Tasi a +0, -0 ko NaN, amma yaua yaki; yaua dama yaki. |
String | Tasi a ciki ne yaua, amma yaua yaki; yaua dama yaki. |
Object | true |
Fage garin kara NOT
在 ECMAScript 中,逻辑 NOT 运算符与 C 和 Java 中的逻辑 NOT 运算符相同,都由感叹号(!)表示。
与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值。
逻辑 NOT 运算符的行为如下:
- 如果运算数是对象,返回 false
- 如果运算数是数字 0,返回 true
- 如果运算数是 0 以外的任何数字,返回 false
- 如果运算数是 null,返回 true
- 如果运算数是 NaN,返回 true
- 如果运算数是 undefined,发生错误
通常,该运算符用于控制循环:
var bFound = false; var i = 0; while (!bFound) { if (aValue[i] == vSearchValues) { bFound = true; } else { i++; } }
在这个例子中,Boolean 变量(bFound)用于记录检索是否成功。找到问题中的数据项时,bFound 将被设置为 true,!bFound 将等于 false,意味着运行将跳出 while 循环。
判断 ECMAScript 变量的 Boolean 值时,也可以使用逻辑 NOT 运算符。这样做需要在一行代码中使用两个 NOT 运算符。无论运算数是什么类型,第一个 NOT 运算符返回 Boolean 值。第二个 NOT 将对该 Boolean 值求负,从而给出变量真正的 Boolean 值。
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));
结果:
bFalse 的逻辑值是 false sRed 的逻辑值是 true iZero 的逻辑值是 false iThreeFourFive 的逻辑值是 true oObject 的逻辑值是 true
逻辑 AND 运算符
在 ECMAScript 中,逻辑 AND 运算符用双和号(&&)表示:
masu kula:
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
下面的真值表描述了逻辑 AND 运算符的行为:
mu'amalai 1 | mu'amalai 2 | sabonin |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
逻辑 AND 运算的运算数可以是任何类型的,不止是 Boolean 值。
如果某个运算数不是原始的 Boolean 型值,逻辑 AND 运算并不一定返回 Boolean 值:
- 如果一个运算数是对象,另一个是 Boolean 值,返回该对象。
- 如果两个运算数都是对象,返回第二个对象。
- 如果某个运算数是 null,返回 null。
- 如果某个运算数是 NaN,返回 NaN。
- idin kiyasar mu'amalai kuma ita ce babba, za a samu ra'ayi.
与 Java 中的逻辑 AND 运算相似,ECMAScript 中的逻辑 AND 运算也是简便运算,即如果第一个运算数决定了结果,就不再计算第二个运算数。对于逻辑 AND 运算来说,如果第一个运算数是 false,那么无论第二个运算数的值是什么,结果都不可能等于 true。
考虑下面的例子:
var bTrue = true; var bResult = (bTrue && bUnknown); //发生错误 alert(bResult); //这一行不会执行
这段代码在进行逻辑 AND 运算时将引发错误,因为变量 bUnknown 是未定义的。变量 bTrue 的值为 true,因为逻辑 AND 运算将继续计算变量 bUnknown。这样做就会引发错误,因为 bUnknown 的值是 undefined,不能用于逻辑 AND 运算。
Idan a yi kama na farko a cikin shi, yana daidai da 'false', to ba a samu ra'ayi ba:
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); //cikin takamaiman 'false'
Hakan koda wajen a yi, yana ya kai jiyar da kuma cikin takamaiman da ke saukar da kuma cikin takamaiman da ke saukar da 'false'. Idan kuma kuma kuma bUnknown na yin cikin kiyasar 'undefined', ita bai a cikin aikata ba, saboda kama na farko na aikata shine 'false'.
koyarwa: }}idin kaiyawa mu'amalai AND, za a kaiyawa mu'amalai daidai a cikin mu'amalai daidai.
mu'amalai OR
mu'amalai OR a cikin ECMAScript ita ce da yadda ake amfani da Java, kuma ita ce tare da fara fara (||):
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
tabbin kiyasar kuma ita ce mu'amalai OR, kuma ita ce mu'amalai daidai:
mu'amalai 1 | mu'amalai 2 | sabonin |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
dahinta da mu'amalai AND, idan kiyasar mu'amalai kuma ita ce mutum, mu'amalai OR kuma ita ce mutum ba a dace da kiyasar Boolean ba:
- idin kiyasar mu'amalai ita ce mutum, kuma duk kiyasar mu'amalai na biyu ita ce false, za a samu mutum.
- idin kiyasar mu'amalai na biyu ita ce mutum, za a samu mutum na farko.
- idin kiyasar mu'amalai na farko ita ce null, kuma duk kiyasar mu'amalai na biyu ita ce false, za a samu null.
- idin kiyasar mu'amalai na farko ita ce NaN, kuma duk kiyasar mu'amalai na biyu ita ce false, za a samu NaN.
- idin kiyasar mu'amalai kuma ita ce babba, za a samu ra'ayi.
dahinta da mu'amalai AND, mu'amalai OR kuma ita ce mu'amalai daidai. domin mu'amalai OR, idan kiyasar mu'amalai farko ita ce true, za a kaiyawa, kuma za a kaiyawa mu'amalai na biyu.
masu kula:
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); // ana samun "true"
dahinta da bayanin yanzu, mu'amalai bUnknown ita ce babba. amma, saboda kiyasar mu'amalai bTrue ita ce true, bUnknown zai kaiyawa, kuma ana samun "true" a cikin kudade.
idin kara bTrue zuwa false, za a samu ra'ayi:
var bFalse = false; var bResult = (bFalse || bUnknown); // an samu ra'ayi alert(bResult); // kaiyawa ba za a gudanar da wannan kudade
- baya na farko mu'amalai bayan
- baya na kwanan nan mu'amalai kuma