ECMAScript Boolean 运算符
- အရှေ့လွှတ် နောက်ဆုံး လှုပ်ရှားမှု
- နောက်လွှတ် ပုံမှန် လှုပ်ရှားမှု
Boolean 运算符非常重要,它使得程序语言得以正常运行。
Boolean 运算符有三种:NOT、AND 和 OR。
ToBoolean 操作
在学习各种逻辑运算符之前,让我们先了解一下 ECMAScript-262 v5 规范中描述的 ToBoolean 操作。
ပြင်းအားကြီး အက္ခရာ ပြောင်းလဲခြင်း လုပ်ဆောင်ရာ အချက်အလက် အောက်ပါ ပြင်းအားကြီး အက္ခရာ အတိုင်း ပြောင်းလဲသည်
ပြင်းအားကြီး အက္ခရာ | 结果 |
---|---|
Undefined | false |
Null | false |
Boolean | အချက်အလက် အတိုင်း ပြန်လည်ပေးသည် (ပြောင်းလဲမှု မပြု) |
Number | ပြင်းအားကြီး ဖြစ်သော ပြင်းအားကြီး အစိုးရရှိသော အချက်အလက် |
String | ပြင်းအားကြီး ဖြစ်သော ပြင်းအားကြီး အစိုးရရှိသော အချက်အလက် |
Object | true |
逻辑 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 ဘာသာစကား သဘောတရား သဘောတရား အကြောင်းအရာ ကို စစ်ဆေး ရာတွင် အကြောင်းအရာ NOT တုတ်ပြောင်းစဉ် အသုံးပြု နိုင်ပါသည်။ ထိုသို့ လုပ်လျှင် အသုံးပြုသော အကြောင်းအရာ နှစ်ခုစလုံး အသုံးပြုသည်။ တုတ်ပြောင်းစဉ် ပုံစံ အကြောင်းအရာ သည် အကြောင်းအရာ အကြောင်းအရာ ပြန်ပေးသည်။ ဒုတိယတုတ်ပြောင်းစဉ် အကြောင်းအရာ သည် အကြောင်းအရာ အကြောင်းအရာ ကို အပြင်းအထန် ပြန်ပေးသည်။
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 运算符用双和号(&&)表示:
အကျယ်း
var bTrue = true; var bFalse = false; var bResult = bTrue && bFalse;
အတိုင်းအတာ AND ပြောင်းလဲမှု လက္ခဏာ ကို အချက်အလက် ပြထားသည်
运算数 1 | 运算数 2 | 结果 |
---|---|---|
true | true | true |
true | false | false |
false | true | false |
false | false | false |
အတိုင်းအတာ AND ပြောင်းလဲမှု အရာသတ် က အတိုင်းအတာ အတိုင်း ဖြစ်ကြသည်။
အရာသတ် တစ်ခု မှာ အမှတ် အတိုင်းအတာ မဟုတ်ဘဲ အတိုင်းအတာ AND ပြောင်းလဲမှု က အတိုင်းအတာ အတိုင်းရှိ မဟုတ် သည်။
- အရာသတ် တစ်ခု ဖြစ်ကြသည့် အခါ အရာသတ် တစ်ခု အတိုင်းအတာ ဖြစ်ကြသည့် အခါ အရာသတ် တစ်ခု ကို ပြန်လည်ပေးသည်。
- နှစ်ခု စလုံး အရာသတ် ဖြစ်ကြသည့် အခါ ဒီ အရာသတ် တစ်ခု ကို ပြန်လည်ပေးသည်。
- အရာသတ် တစ်ခု မှာ null ဖြစ်ပါက အတိုင်းအတာ null ဖြစ်သည်。
- အရာသတ် တစ်ခု မှာ NaN ဖြစ်ပါက အတိုင်းအတာ NaN ဖြစ်သည်。
- အချက်အလက် မရှိသော လှုပ်ရှားမှု ဖြစ်ပါက အမှား ဖြစ်ပါ
Java တွင် အတိုင်းအတာ AND ပြောင်းလဲမှု နှင့် တူညီသည်၊ ECMAScript တွင် အတိုင်းအတာ AND ပြောင်းလဲမှု က ပရိုမိန်း ပြောင်းလဲမှု ဖြစ်သည်။ အတိုင်းအတာ AND ပြောင်းလဲမှု အတွက် အရာသတ် တစ်ခု က အတိုင်းအတာ ကို ကိုက်ညီစေသည့်အတွက် ဒီ အရာသတ် တစ်ခု ကို ခန့်မှန်းချက်ချရမည်။ အတိုင်းအတာ AND ပြောင်းလဲမှု အတွက် အရာသတ် တစ်ခု မှာ false ဖြစ်ပါက ဒီ အရာသတ် တစ်ခု အတိုင်းအတာ အတွက် အသုံးပြုရန် မရှိပါ။
ဒီ အကျိုးသမား ကို ကြည့်ရမည်
var bTrue = true; var bResult = (bTrue && bUnknown); // အမှား ဖြစ်ပါ alert(bResult); // ဒီ စကာတင် မပြောင်းလဲပါ
ဒီ လုပ်ငန်းကုဒ် က အတိုင်းအတာ AND ပြောင်းလဲမှု ကို ဖြစ်ပေါ်စေသည်၊ သို့သော် ဒီ bUnknown အမှတ် မှာ undefined ဖြစ်သည်။ ဒီ bTrue အမှတ် မှာ true ဖြစ်သည်၊ သို့သော်လည်း အတိုင်းအတာ AND ပြောင်းလဲမှု က ဒီ bUnknown အမှတ် ကို ခန့်မှန်းချက်ချရမည်၊ သို့သော် ဒီ bUnknown အမှတ် မှာ undefined ဖြစ်သည်၊ အတိုင်းအတာ AND ပြောင်းလဲမှု ကို အသုံးပြုရန် မရှိပါ။
ဒီ အကျိုးသမား ကို ပြောင်းလဲပါက ပထမ အရာသတ် ကို false ဖြင့် စတင်ကြောင်း မရှိသေးပါ။
var bFalse = false; var bResult = (bFalse && bUnknown); alert(bResult); // အဓိပ္ပာယ် "false"
ဒါက လုပ်ငန်းကုဒ်မှာ အတိုင်းအတာ AND ပြောင်းလဲမှု ကို တစ်ခါ ထုတ်ပြန်ကြောင်း ရှိသည်။ အဓိပ္ပာယ် "false" ဖြစ်သည်။ သို့သော်လည်း ဒီ bUnknown အမှတ် မှာ undefined ဖြစ်ပါက သူ့ကို တစ်ခါ ခန့်မှန်းချက်ချရမည် မဟုတ်၊ သို့သော်လည်း ပထမ အရာသတ် အတိုင်းအတာ မှာ false ဖြစ်သည်။
提示:在使用逻辑 AND 运算符时,必须记住它的这种简便计算特性。
逻辑 OR 运算符
ECMAScript 中的逻辑 OR 运算符与 Java 中的相同,都由双竖线(||)表示:
var bTrue = true; var bFalse = false; var bResult = bTrue || bFalse;
下面的真值表描述了逻辑 OR 运算符的行为:
运算数 1 | 运算数 2 | 结果 |
---|---|---|
true | true | true |
true | false | true |
false | true | true |
false | false | false |
与逻辑 AND 运算符相似,如果某个运算数不是 Boolean 值,逻辑 OR 运算并不一定返回 Boolean 值:
- နောက်ဆုံး လှုပ်ရှားမှု သည် အရာဝတ္တု ဖြစ်ပြီး အရာဝတ္တု အတွက် အချက်အလက် အားလုံး အတိုင်း false ဖြစ်သောကြောင်း အတိုင်း ပထမ လှုပ်ရှားမှု ဖြစ်ပါ
- နောက်ဆုံး လှုပ်ရှားမှု နှင့် အတူ နောက်ဆုံး လှုပ်ရှားမှု အတိုင်း ပထမ လှုပ်ရှားမှု ဖြစ်ပါ
- နောက်ဆုံး လှုပ်ရှားမှု သည် null ဖြစ်ပြီး အခြား လှုပ်ရှားမှု အချက်အလက် အားလုံး အတိုင်း false ဖြစ်သောကြောင်း အပြန်အလှန် ဖြစ်ပါ
- နောက်ဆုံး လှုပ်ရှားမှု သည် NaN ဖြစ်ပြီး အခြား လှုပ်ရှားမှု အချက်အလက် အားလုံး အတိုင်း false ဖြစ်သောကြောင်း အပြန်အလှန် ဖြစ်ပါ
- အချက်အလက် မရှိသော လှုပ်ရှားမှု ဖြစ်ပါက အမှား ဖြစ်ပါ
ဗေဒဆိုင်ရာ AND လှုပ်ရှားမှု နဲ့ အတူ ဗေဒဆိုင်ရာ OR လှုပ်ရှားမှု သည် အင်မတရား လှုပ်ရှားမှု ဖြစ်သည်။ ဗေဒဆိုင်ရာ OR လှုပ်ရှားမှု အတွက် ပထမ လှုပ်ရှားမှု အတိုင်း အချက်အလက် အတည်ပြုလုပ်သည်
အကျယ်း
var bTrue = true; var bResult = (bTrue || bUnknown); alert(bResult); //"true" ပြောင်းလဲ
အရှေ့လွှတ် နဲ့ အတူ ပြီး အရှေ့လွှတ် အတွက် bTrue အတိုင်း အတည်ပြုထားသည် အကြောင်းကို မပြောင်းလဲပါဘူး၊ အထွက်အမြင် သည် "true" ဖြစ်ပါ
ပြီးတော့ bTrue ကို false အထိမ်းအား ပြောင်းလဲပါက အမှား ဖြစ်ပါ
var bFalse = false; var bResult = (bFalse || bUnknown); //အမှား ဖြစ်ပါ alert(bResult); //တစ်ခုခု မပြောင်းလဲပါ
- အရှေ့လွှတ် နောက်ဆုံး လှုပ်ရှားမှု
- နောက်လွှတ် ပုံမှန် လှုပ်ရှားမှု