ECMAScript Relational Operators
- Nakaraang Pahina Operator ng pagpipi
- Susunod na Pahina Operator ng pagkakapareho
Ang relasyon operator ay nagsasagawa ng paghahalintulad. Ang bawat relasyon operator ay ibabalik ang isang Boolean value.
Pangkaraniwang paraan ng paghahalintulad
Ang relasyon operator na mas maliit, mas malaki, mas maliit ng madaling sabihin at mas malaki ng madaling sabihin ay nagsasagawa ng paghahalintulad ng dalawang bilang, katulad ng paghahalintulad ng aritmetikong operatory.
Ang bawat relasyon operator ay ibabalik ang isang Boolean value:
var bResult1 = 2 > 1 //totoo var bResult2 = 2 < 1 //maliit
Gayunman, kapag inilapat ang relasyon operator sa dalawang string, ang kanilang pag-uugali ay magkakaiba. Maraming tao ang nangangaral na ang "mas maliit" ay nangangahulugan na "mas nasa unang posisyon sa abugado", at ang "mas malaki" ay nangangahulugan na "mas nasa huling posisyon sa abugado", ngunit hindi ito totoo. Para sa string, ang character code ng bawat character sa unang string ay paghahalintulad sa character code ng katumbas na character sa ikalawang string. Pagkatapos ng paghahalintulad na ito, ibabalik ang isang Boolean value. Ang problema ay ang character code ng mga may malaking titik ay mas maliit kaysa sa mga may maliliit na titik, kaya maaaring magkaroon ng mga sumusunod na sitwasyon:
var bResult = "Blue" < "alpha"; alert(bResult); // maglathala ng true
Sa pagkakataon na ito, ang string na "Blue" ay mas maliit kay "alpha", dahil ang character code ng B ay 66, at ang character code ng a ay 97. Upang mapigilang maging ayon sa tunay na abugado na paghahalintulad, kailangang baguhin ang dalawang bilang na magkaparehong kapagkuraps, kapag nakikipaghahalintulad:
var bResult = "Blue".toLowerCase() < "alpha".toLowerCase(); alert(bResult); //Output false
Baguhin ang dalawang bilang sa maliit na titik, upang matiyak na ma-identify na ang "alpha" ay nasa unang bahagi ng abugado bago ang "Blue".
Pagkumpara ng numero at string
Isa pang mahirap na sitwasyon ay nangyayari kapag pinagkumpara ang dalawang numero sa anyo ng string, tulad ng:
var bResult = "25" < "3"; alert(bResult); //Output "true"
Ang code na ito ay pinagkumpara ang string "25" at "3". Ang dalawang bilang na ginagamit ay string, kaya pinagkumpara ang kanilang character code (ang character code ng "2" ay 50, ang character code ng "3" ay 51).
Gayunman, kung ang anumang bilang na ginagamit ay magiging numero, ang resulta ay magiging kagiliw-giliw:
var bResult = "25" < 3; alert(bResult); //Output "false"
Dito, ang string "25" ay magiging numero 25, pagkatapos ay magkumpara sa numero 3, ang resulta ay kahit anong inaasahan.
Anumang panahon na pinagkumpara ang isang numero at string, ang ECMAScript ay magbabaguhin ang string sa numero, pagkatapos ay magkumpara sila ayon sa pagkakabanggit ng numero.
Gayunman, kung ang string ay hindi maaaring baguhin sa numero, paano? Isipin ang sumusunod na halimbawa:
var bResult = "a" < 3; alert(bResult);
Maari mong hulaan kung ano ang magiging output ng kasunod na code? Ang titik "a" ay hindi maaaring baguhin sa may kabuluhan na numero. Gayunpaman, kapag tinatawag ang parseInt() method dito, ang bumabalik ay NaN. Ayon sa patakaran, ang anumang relasyon na may NaN ay dapat umabot sa false, kaya ang kasunod na code ay din umabot sa false:
var bResult = "a" >= 3; alert(bResult);
Karaniwan, kung ang dalawang halaga na binabanggit sa pagkakabanggit ay mas mababa, ang kahit anong kahit na hihigit sa kahit anong halaga ay dapat umabot sa true, ngunit kung ang anumang numero ay NaN, ang sitwasyon ay hindi tulad nito.
- Nakaraang Pahina Operator ng pagpipi
- Susunod na Pahina Operator ng pagkakapareho