JavaScript/Palyginimo operatoriai

Iš Wikibooks.

JAVASCRIPT PROGRAMAVIMO PAGRINDAI
(instrukcinis vadovas pradedantiesiems)[keisti]

Palyginimo operatoriai[keisti]


Palyginimo operatoriai palygina operandus ir grąžina Būlio tipo vertes. Kai kurie jų turėtų būti jums žinomi iš vid. mokyklos matematikos kurso. Tai palyginimai: „mažiau“ (ženklas <), „daugiau“ (>), „mažiau arba lygu“ (<=), „daugiau arba lygu“ (>=), „lygu“ (==), „nelygu“ (!=) „griežtai lygu“ (===), „griežtai nelygu“ (!==). Operatoriai palygina operandą savo kairėje su operandu savo dešinėje.

Užduotis. Susipažinkite su šiomis ekspresijomis ir savarankiškai atsakykite, kokią Būlio vertę grąžins palyginimo operatoriai:

  • 2>3; // ar skaičius 2 didesnis už skaičių 3?
  • 2<3; // ar skaičius 2 mažesnis už skaičių 3?
  • 4>=4; // ar skaičius 4 didesnis už skaičių 4 arba jam lygus?
  • 10<=4; // ar skaičius 10 mažesnis už skaičių 4 arba jam lygus?

Atsakymus galite pasitikrinti konsolės eilutėse surinkę ekspresijas ir po kiekvienos nuspaudę 'Enter'.

Keletas kitų operandų jums turėtų būti negirdėti ir šioje vietoje JS kalba pradeda išsiskirti nuo įprastos matematikos, nes JS kalboje lygybės ženklas „=“ nereiškia lygybės.

Atsiminkim, kad duomenys JS apibūdinami jų tipu ir verte. Tad operandus tarpusavyje galima palyginti pagal jų tipą ir vertę.

Operatorius, kuris palygina operandų vertes, bet nelygina jų tipų, vadinamas negriežtos lygybės operatoriumi ir žymimas „==“ ženklu. Jam atvirkščias negriežtos nelygybės operatorius žymimas „!=“ ženklu.

Užduotis. Susipažinkite su šiomis ekspresijomis ir savarankiškai atsakykite, kokią Būlio vertę gražins palyginimo operatoriai:

  • 2==3; // ar skaičiaus 2 vertė lygi skaičiaus 3 vertei neatsižvelgiant į operandų tipą?
  • 2=="2"; // ar skaičiaus 2 vertė lygi teksto "2" vertei neatsižvelgiant į operandų tipą?
  • 2!=3; // ar skaičiaus 2 vertė nelygi skaičiaus 3 vertei neatsižvelgiant į operandų tipą?

Teisingus atsakymus pasitikrinkite konsolėje.

Jūs tikriausiai nustebsite pamatę, kad 2=="2" atveju konsolė grąžino atsakymą true. Bet čia pasireiškė viena JS savybė – automatinis duomenų tipo pakeitimas. Šiuo atveju JS atpažino, kad tekstas "2" (string tipas) slepia galimą skaičių 2 (number tipas) ir automatiškai jį pakeitė į skaičių (number), o po to palygino su skaičiumi 2 ir grąžino atsakymą, Būlio vertę true.

Automatinis JS duomenų tipų keitimas aptartas atskirame skyriuje. Naudojant visus palyginimo operatorius, išskyrus griežtos lygybės ir griežtos nelygybės operatorius, JS bandys atlikti automatinį duomens tipo keitimą į skaičiaus (number), jei atpažins, kad lyginami skirtingų tipų operandai.

Paskutiniai palyginimo operatoriai yra griežtos lygybės operatorius (ženklas ===) ir jam priešingas griežtos nelygybės operatorius (ženklas !==). Jie lygina ir operandų vertę, ir tipą, tad operacija 2==="2" grąžins vertę false, nes griežtos lygybės operatorius įvertins operandų tipų skirtumą.

Užduotis. Susipažinkite su šiomis ekspresijomis ir savarankiškai atsakykite, kokią Būlio vertę grąžins palyginimo operatoriai:

  • 2===3; // ar skaičiaus 2 vertė ir tipas lygūs skaičiaus 3 vertei ir tipui atitinkamai?
  • 2==="2"; // ar skaičiaus 2 vertė ir tipas lygūs teksto "2" vertei ir tipui atitinkamai?
  • 2!==3; // ar skaičiaus 2 vertė ir tipas nelygūs skaičiaus 3 vertei ir tipui atitinkamai?

Teisingus atsakymus pasitikrinkite konsolėje.