ECMAScript အကွက် အသုံး

判断两个变量是否相等是程序设计中非常重要的运算。在处理原始值时,这种运算相当简单,但涉及对象,任务就稍有点复杂。

ECMAScript 提供了两套等性运算符:等号和非等号用于处理原始值,全等号和非全等号用于处理对象。

等号和非等号

在 ECMAScript 中,等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。

အခြေခံအုတ်အကြိမ် ပြုလုပ်ခြင်း အခြေခံအုတ်အကြိမ်များ:

  • အခြားအရာဝတ္တုများ အတူ Boolean အကျိုးစကား ဖြစ်ပါက အရာဝတ္တုကို အရာဝတ္တုအဖြစ် ပြန်လည်ပြောင်းလဲခြင်း ကို ကြိုးစားရမည်။ false ကို 0 အဖြစ် ပြန်လည်ပြောင်းလဲခြင်း နှင့် 1 အဖြစ် ပြန်လည်ပြောင်းလဲခြင်း ပြုလုပ်သည်။
  • အခြားအရာဝတ္တုများ အတူ အစားအဝေး ဖြစ်ပါက အစားအဝေးကို အရာဝတ္တုအ�ြစ် ပြန်လည်ပြောင်းလဲခြင်း ကို ကြိုးစားရမည်။
  • အခြားအရာဝတ္တုများ အတူ အရာဝတ္တုတစ်ခု ဖြစ်ပါက အရာဝတ္တုကို အစားအဝေးအဖြစ် ပြန်လည်ပြောင်းလဲခြင်း ကို ကြိုးစားရမည်။
  • အခြားအရာဝတ္တုများ အတူ အရာဝတ္တုတစ်ခု ဖြစ်ပါက အရာဝတ္တုကို အရာဝတ္တုအဖြစ် ပြန်လည်ပြောင်းလဲခြင်း ကို ကြိုးစားရမည်။

နှိုင်းယှဉ်ခြင်း အတွက် အခြားအရာဝတ္တုများ ကို အခြေခံအုတ်အကြိမ်များ ဖြင့် ကြည့်ရှုခြင်း အား အခြေခံအုတ်အကြိမ်များ ပြုလုပ်ခြင်း အား ကြည့်ရှုခြင်း မပြုရ။

  • null နှင့် undefined အတ္ထ အတူတူဖြစ်သည်။
  • အမှတ်ပြားချိန်မှ undefined သို့ အသုံးပြုခြင်း ကို အကျိုးစကား အဖြစ် ကြည့်ရှုခြင်း မပြုရ။
  • အခြားအရာဝတ္တုများ အတူ NaN ဖြစ်ပါက အမှတ်ပြားချိန်တွင် false ကို ပြန်လည်ပေးသည်၊ အမှတ်ပြားချိန်မဟုတ်သော အခြားအရာဝတ္တုများ ဖြစ်ပါက true ကို ပြန်လည်ပေးသည်။
  • နှစ်ခုစလုံး အရာဝတ္တု ဖြစ်ပါက အခြားအရာဝတ္တုများ၏ ပြင်းပြင်းထန်ထန်သော ပုံစံကို နှိုင်းယှဉ်ကြသည်။ အခြားအရာဝတ္တုများ အတူတူ ဖြစ်ပါက အမှတ်ပြားချိန်တွင် true ကို ပြန်လည်ပေးသည်၊ တကား နှစ်ခုစလုံး အရာဝတ္တုများ မတူချေ။

အခြေအားပေးချက်:နှစ်ခုစလုံး NaN ဖြစ်ပါက အမှတ်ပြားချိန်တွင် false ကို ပြန်လည်ပေးသည်၊ သို့သော်ကား အခြေခံအုတ်အကြိမ်များ အရ NaN သည် NaN မဟုတ်ချေအပြီ။

အောက်ပါ အချက်အလက်များ နှင့် သူတို့၏ ရလဒ်များ ကို စာရင်းတစ်ခု တွင် ရှိသည်:

အကျိုးစကား အတ္ထ
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"5" == 5 true

全等号和非全等号

等号和非等号的同类运算符是全等号和非全等号。这两个运算符所做的与等号和非等号相同,只是它们在检查相等性前,不执行类型转换。

全等号由三个等号表示(===),只有在无需类型转换运算数就相等的情况下,才返回 true。

例如:

var sNum = "66";
var iNum = 66;
alert(sNum == iNum);	//输出 "true"
alert(sNum === iNum);	//输出 "false"

在这段代码中,第一个 alert 使用等号来比较字符串 "66" 和数字 66,输出 "true"。如前所述,这是因为字符串 "66" 将被转换成数字 66,,然后才与另一个数字 66 进行比较。第二个 alert 使用全等号在没有类型转换的情况下比较字符串和数字,当然,字符串不等于数字,所以输出 "false"。

非全等号由感叹号加两个等号(!==)表示,只有在无需类型转换运算数不相等的情况下,才返回 true。

例如:

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);	//输出 "false"
alert(sNum !== iNum);	//输出 "true"

这里,第一个 alert 使用非等号,把字符串 "66" 转换成数字 66,使得它与第二个运算数 66 相等。因此,计算结果为 "false",因为两个运算数是相等的。第二个 alert 使用的非全等号。该运算是在问:"sNum" 与 "iNum" 不同吗?这个问题的答案是:是的(true),因为 sNum 是字符串,而 iNum 是数字,它们当然不同。