Vitendo vya Boolean vya ECMAScript
- Pya zaidi Vifaa vya uharibifu
- Pya zaidi Vifaa vya uingilio
Vitendo vya Boolean vya ECMAScript vitahidi sana, inasaidia kufikia uharibifu wa lugha ya programu.
Vitendo vya Boolean vinapatwa tatu: NOT, AND na OR.
Vitendo ToBoolean
Kufikia kueleza vitendo vingine vya logic, tukieleza vitendo ToBoolean vya maelezo ya ECMAScript-262 v5.
Mwenzako wa kufikia ujumbe ToBoolean inapaswa kubadilika kwa thamani ya logiki kwa kanuni ya tabia hii:
Jinsia ya parameter | Matokeo |
---|---|
Undefined | false |
Null | false |
Boolean | Matokeo unaingia kwa sababu ya parameter (hakupaswa kubadilika) |
Number | Ikiwa sababu ya parameter ni +0, -0 au NaN, matokeo ni false; inayotaka ni true. |
String | Ikiwa sababu ya parameter ni string hivyo, matokeo ni false; inayotaka ni true. |
Object | true |
Tukio la logic NOT
在 ECMAScript 中,逻辑 NOT 运算符与 C 和 Java 中的逻辑 NOT 运算符相同,都由感叹号(!)表示。
与逻辑 OR 和逻辑 AND 运算符不同的是,逻辑 NOT 运算符返回的一定是 Boolean 值。
逻辑 NOT 运算符的行为如下:
- 如果运算数是对象,返回 false
- 如果运算数是数字 0,返回 true
- 如果运算数是 0 以外的任何数字,返回 false
- 如果运算数是 null,返回 true
- 如果运算数是 NaN,返回 true
- 如果运算数是 undefined,发生错误
Kawaida, alama hii inatumiwa kusimamia kikuu cha kikuria:
var bFound = false; var i = 0; while (!bFound) { if (aValue[i] == vSearchValues) { bFound = true; } i++; } }
Kwenye mivumbuzi hii, thamani la logiki (bFound) inatumika kusora ukabidi. Kwa kumwita data item ya matukio, bFound itakapopaswa kufikirika kama kweli, !bFound itakapokubali kama hali ya kweli, ina maana kwamba programu itakapokimbia kikuu cha while.
Ina huzingatia kwa kawaida kwa kusoma thamani la Boolean ya waSimu ECMAScript, inaweza kutumia alama ya mafikiru ya logiki. Kwa hivyo, inafaa kutumia mafikiru ya logiki ya pili kwenye mawazo mawili ya mawazo mawili. Kila matokeo wa mafikiru inatoa thamani la logiki. Mafikiru ya pili itakapokimbia thamani la logiki hivi, inatoa thamani la logiki ya kina ya thamani ya kiwango.
var bFalse = false; var sRed = "red"; var iZero = 0; var iThreeFourFive = 345; var oObject = new Object; document.write("waSimu ya bFalse ina wadhihisha hali yake la logiki ya " + (!!bFalse)); document.write("waSimu ya sRed ina wadhihisha hali yake la logiki ya " + (!!sRed)); document.write("waSimu ya iZero ina wadhihisha hali yake la logiki ya " + (!!iZero)); document.write("waSimu ya iThreeFourFive ina wadhihisha hali yake la logiki ya " + (!!iThreeFourFive)); document.write("waSimu ya oObject ina wadhihisha hali yake la logiki ya " + (!!oObject));
Matokeo:}
Thamani ya bFalse inaona false Thamani ya sRed inaona true Thamani ya iZero inaona false Thamani ya iThreeFourFive inaona true Thamani ya oObject inaona true
Kinaopereta AND
Kwenye ECMAScript, kinaopereta AND inaitwa na kinaopereta ya pili na kinaopereta ya nne (&&):
Mfano:
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
Tafaniki ya matokeo ya kinaopereta AND inadhesha maadili ya kinaopereta:
Uharibifu 1 | Uharibifu 2 | Matokeo |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
Kinaopereta kwenye kifungu AND kinaathirika kwa kufikia kinaopereta kwa uharibifu, bila kufikia thamani ya Boolean.
Kama kinaopereta haina thamani ya Boolean, kifungu AND kinaathirika kwa kufikia thamani ya Boolean:
- Kama kinaopereta moja ni vifaa, moja ni Boolean, inarudi vifaa hiyo.
- Kama kinaopereta zote ni vifaa, inarudi vifaa ya pili.
- Kama kinaopereta ni null, inarudi null.
- Kama kinaopereta ni NaN, inarudi NaN.
- Kama thamani ya kwanza ya uharibifu ina thamani ya lizungumza, kuna kosa.
Kama kinaopereta AND kwenye Java, kinaopereta AND kwenye ECMAScript inaonesha ukifanywa kwa uharibifu, yaani inakubali kinaopereta ya kwanza inakadhisia matokeo, haukufungua kinaopereta ya pili. Kwa kinaopereta AND, kama kinaopereta ya kwanza ni false, hawakufikia matokeo ambao hauwezi kufikia true kama thamani ya kinaopereta ya pili ni gani.
Kueleza mbinu hii:
var bTrue = true; var bResult = (bTrue && bUnknown); //inaathirika kosa alert(bResult); //barua hii inaathirika
Kwenye kipindi hiki kinaathirika kosa kwa kufungua kifungu AND, kwa sababu variable bUnknown inaathiriwa. Thamani ya variable bTrue inaona true, kwa sababu kifungu AND kinaendelea kumegudua variable bUnknown. Hii inakubwa kosa, kwa sababu thamani ya bUnknown inaathiriwa, hauwezi kufanywa kifungu AND.
Kama unaingiza matokeo hii, na kumaliza kinaopereta ya kwanza kwa false, hawakufikia kosa:
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); //kufichuka "false"
Kwenye kipindi hiki, skripta kina kushika ukifuata matokeo wa kifungu AND, yaani stringi "false". Inafikia ukifungua bila kumegudua kiwango cha variable bUnknown, kwa sababu thamani ya kinaopereta ya kwanza ni false.
Msaada:}Kama kumeonekana kwa vifaa vya AND logic, lazima tuonekani kwa thamani ya uharibifu ya vifaa hii.
Vifaa vya OR logic
Vifaa vya OR logic katika ECMAScript ni kama vya Java, zinaonyeshwa na kifaa cha kifaa (||):
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
Tabia ya hali ya kina ya vifaa vya OR logic inaeleza kwa kina:
Uharibifu 1 | Uharibifu 2 | Matokeo |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
Kama kimeonekana kwa vifaa vya AND logic, kama thamani ya kwanza ya uharibifu ina thamani ya lizungumza, vifaa vya OR logic hauwezi kutoa thamani ya lizungumza:
- Kama thamani ya kwanza ya uharibifu ina vifaa, na thamani zingine zina thamani ya false, inatuma vifaa hii.
- Kama thamani zote zinajua kwa sababu ni vifaa, inatuma kwanza kwa thamani ya vifaa.
- Kama thamani ya kwanza ya uharibifu ina thamani ya null, na thamani zote zingine zina thamani ya false, inatuma null.
- Kama thamani ya kwanza ya uharibifu ina thamani ya NaN, na thamani zote zingine zina thamani ya false, inatuma NaN.
- Kama thamani ya kwanza ya uharibifu ina thamani ya lizungumza, kuna kosa.
Kama kimeonekana kwa vifaa vya AND logic, vifaa vya OR logic ni vifaa vya uharibifu. Kwa vifaa vya OR logic, kama thamani ya kwanza ya uharibifu ina thamani ya true, hata hivyo hauwezi kufanyika thamani ya pili.
Mfano:
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); //Inatuma 'true'
Kama kimeonekana kwa matokeo, jina la variable bUnknown ni lizungumza. Kwa sababu thamani ya variable bTrue ina thamani ya true, bUnknown haitafanyikiiwa, kwa sababu inatufanya 'true'.
Kama bTrue inachangeza false, kuna kosa:
var bFalse = false; var bResult = (bFalse || bUnknown); //Kuna kosa alert(bResult); //Haiwezi kufanyika mstari hii
- Pya zaidi Vifaa vya uharibifu
- Pya zaidi Vifaa vya uingilio