Equality Operator ng ECMAScript
- Nakaraang pahina Relational Operator
- Susunod na pahina Conditional Operator
Ang pagtutukoy kung ang dalawang variable ay kapareho ay isang napakahalagang operasyon sa disenyo ng programa. Kapag nakikita ang mga halaga, ang operasyon na ito ay lubos na madaling gawin, ngunit kapag kasangkot ang mga bagay, ang ginagawa ay masyadong kumplikado.
Ang ECMAScript ay nagbibigay ng dalawang set ng equality operator: ang equal sign (==) at not equal sign (!=) ay ginagamit para sa magkaroon ng halaga, at ang strict equal sign (===) at strict not equal sign (!==) ay ginagamit para sa mga bagay.
Equal sign at not equal sign
Sa ECMAScript, ang equal sign (==) ay inilalarawan ng magkakapareho na equal sign (==), at ibabalik ito sa true kapag ang dalawang pinagsasaling salin ay kapareho. Ang not equal sign (!=) ay inilalarawan ng isang exclamation mark plus equal sign (!=), at ibabalik ito sa true kapag ang dalawang pinagsasaling salin ay hindi kapareho. Upang matukoy kung ang dalawang pinagsasaling salin ay kapareho, ang dalawang operator na ito ay gagawin ang type conversion.
Ang alituntunin ng paggawa ng type conversion ay sumusunod:
- Kung ang isang pinagsasaling salin ay isang Boolean value, dapat palitan ito sa halaga ng numero bago ang pagkukumpara ng kagamitan. false ay palitan sa 0, at true ay palitan sa 1.
- Kung ang isang pinagsasaling salin ay isang string, at ang iba ay isang numero, dapat subukang konbertihin ang string sa numero bago ang pagkukumpara ng kagamitan.
- Kung ang isang pinagsasaling salin ay isang bagay, at ang iba ay isang string, dapat subukang konbertihin ang bagay sa string bago ang pagkukumpara ng kagamitan.
- Kung ang isang pinagsasaling salin ay isang bagay, at ang iba ay isang numero, dapat subukang konbertihin ang bagay sa numero bago ang pagkukumpara ng kagamitan.
Sa pagkukumpara, ang operator na ito ay sinusunod ng mga sumusunod na alituntunin:
- Ang halaga na null at undefined ay kapareho.
- Hindi dapat palitan ang null at undefined sa ibang halaga kapag pinagkukumpara ang kagamitan.
- Kung ang isang pinagsasaling salin ay NaN, ang equal sign (==) ay ibabalik sa false, at ang not equal sign (!=) ay ibabalik sa true.
- Kung ang dalawang pinagsasaling salin ay lahat ay mga bagay, ang pagkakapareho ay pinagkukumpara ay ang kanilang mga reference value. Kung ang dalawang pinagsasaling salin ay patungo sa parehong bagay, ang equal sign (==) ay ibabalik sa true, kung hindi, ang dalawang pinagsasaling salin ay hindi kapareho.
Mahalagang Babala:Kahit na ang dalawang bilang ay lahat ay NaN, ang equal sign (==) ay ibabalik sa false dahil ayon sa alituntunin, NaN ay hindi magkapareho sa NaN.
Ang sumusunod na talahanan ay naglilista ng ilang espesyal na kaso at kanilang mga resulta:
ekspresyon | halaga |
---|---|
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 |
Pantay at hindi pantay
Ang magkaparehong operator ng pantay at hindi pantay ay ang pantay at hindi pantay. Ang ginagawa ng dalawang operator na ito ay katulad ng pantay at hindi pantay, ngunit hindi nila ipapalit ang uri ng mga operator bago suriin ang kabanalan.
Ang pantay na samahin ay hinango sa tatlong titik ng pantay (===), lamang kung walang pagbabagong uri ng mga operator ay magiging pantay, ay ibibigay ang true.
Halimbawa:
var sNum = "66"; var iNum = 66; alert(sNum == iNum); //Output "true" alert(sNum === iNum); //Output "false"
Sa kanyang pinangungunang alert, ang unang alert ay gumagamit ng samahin upang magparehersya ang string "66" at ang numero 66, output "true". Gayunpaman, ito ay dahil ang string "66" ay magiging numero 66, bago ito ay magiging pagkakapareho sa ibang numero 66. Ang ikalawang alert ay gumagamit ng pantay na samahin sa pagkakapareho ng string at numero ng walang pagbabagong uri, ng natural na string ay hindi pantay sa numero, kaya ang output ay "false".
Ang hindi pantay na samahin ay hinango sa dalawang titik ng pagsasama at dalawang titik ng pantay (!==), lamang kung walang pagbabagong uri ng mga operator ay magiging pantay, ay ibibigay ang true.
Halimbawa:
var sNum = "66"; var iNum = 66; alert(sNum != iNum); //Output "false" alert(sNum !== iNum); //Output "true"
Dito, ang unang alert ay gumagamit ng hindi pantay na samahin, pagbaguhin ang string "66" sa numero 66, upang ito ay magiging pantay sa ikalawang operator 66. Kaya ang resulta ng kalkulasyon ay "false", dahil ang dalawang operator ay pantay. Ang ikalawang alert ay gumagamit ng hindi pantay na samahin. Ang pag-ooperasyon ay tinatanong: "sNum" at "iNum" ay magkakaiba? Ang sagot sa tanong na ito ay: Oo (true), dahil ang sNum ay string, at ang iNum ay numero, sila ay magkakaiba.
- Nakaraang pahina Relational Operator
- Susunod na pahina Conditional Operator