IlmHamroh
JavaScript Full-stack/8-qism. JavaScript asoslari12/61-dars13 daqiqa
Mundarija (30)

JavaScript taqqoslash operatorlari: >, <, >=, <= va satrlarni solishtirish

Qisqacha: Taqqoslash operatorlari — >, <, >=, <= — ikki qiymatni solishtirib, true yoki false qaytaradi. Sonlar matematikadagidek solishtiriladi. Satrlar esa lug'atdagidek, belgima-belgi solishtiriladi — shuning uchun "10" < "9" natijasi true. NaN bilan har qanday taqqoslash false beradi.

Bu darsda

  • To'rtta taqqoslash operatori bilan sonlarni solishtira olasiz.
  • Taqqoslash natijasini boolean o'zgaruvchiga saqlay olasiz.
  • Satrlar qanday solishtirilishini va nega "10" < "9" ekanini tushuntira olasiz.
  • Son va satr aralash solishtirilganda nima bo'lishini bilasiz.
  • NaN, 1 < 3 < 2 va => kabi tuzoqlarni taniysiz.

Oldin bilishingiz kerak: Boolean va truthy/falsy qiymatlar, Arifmetik va tayinlash operatorlari.

1. Nega bu kerak?

Oldingi darsda sonlarni hisoblashni o'rgandik. Endi ularni solishtiramiz.

Dasturlar har daqiqada solishtiradi:

  • Yoshi 18 dan kattami? — ro'yxatdan o'tishga ruxsat.
  • Hamyonda pul yetadimi? — to'lovni o'tkazish.
  • Harorat 30 darajadan yuqorimi? — "issiq" ogohlantirishi.
  • Parol kamida 8 belgimi? — xavfsizlik tekshiruvi.

Har bir savolning javobi — "ha" yoki "yo'q". Ya'ni boolean: true yoki false. Taqqoslash operatorlari aynan shu javobni beradi.

2. To'rtta taqqoslash operatori

2.1 Maktabdagi belgilar

Bu belgilarni matematika darsidan bilasiz. Klaviaturada ≥ va ≤ yo'q, shuning uchun ikki belgi bilan yoziladi:

Operator Ma'nosi Misol Natija
> katta 10 > 3 true
< kichik 10 < 3 false
>= katta yoki teng 5 >= 5 true
<= kichik yoki teng 4 <= 3 false
js
console.log(10 > 3); // true
console.log(10 < 3); // false
console.log(5 >= 5); // true
console.log(5 > 5); // false
console.log(-1 < 0); // true

5 >= 5 va 5 > 5 farqiga e'tibor bering. "Katta yoki teng" — beshga teng, demak true. "Qat'iy katta" — besh beshdan katta emas, demak false.

Maslahat: >= da belgilar tartibi aytilishi bilan bir xil: "katta (>) yoki teng (=)". Teng belgisi doim ikkinchi turadi. => yoki =< deb yozish — xato (buni 6-bo'limda ko'ramiz).

2.2 Natijani o'zgaruvchiga saqlash

Taqqoslash natijasi — oddiy boolean qiymat. Uni o'zgaruvchiga yozib qo'yish mumkin:

js
const yosh = 20;
const balogatga = yosh >= 18;

console.log(balogatga); // true
console.log(typeof balogatga); // boolean

Ikkinchi qatorda nima bo'ldi? Avval o'ng tomon hisoblandi: 20 >= 18 → true. Keyin true qiymati balogatga ga yozildi. Tayinlash (=) eng oxirida bajarilishini oldingi darsda ko'rgan edik.

O'zgaruvchi nomi savolga javob beradi: "balog'atga yetganmi?" — ha. Boolean darsidagi nomlash qoidasi aynan shu.

2.3 Hisob bilan birga

Taqqoslash arifmetikadan keyin bajariladi. Shuning uchun qavs shart emas:

js
const hamyon = 50000;
const osh = 35000;
const choy = 6000;

console.log(osh + choy <= hamyon); // true

Avval 35000 + 6000 = 41000, keyin 41000 <= 50000 → true. Demak, pul yetadi.

Tekshirib ko'ring: const ball = 71; bo'lsa, ball >= 71 va ball > 71 natijalari qanday?

Javob

ball >= 71 — true, chunki 71 "71 dan katta yoki teng" (teng). ball > 71 — false, chunki 71 o'zidan qat'iy katta emas. Chegara qiymatda (71) > va >= har xil javob beradi — imtihon natijalarida bu juda muhim.

3. Satrlarni solishtirish

3.1 Lug'at tartibi

Satrlarni ham < va > bilan solishtirish mumkin. JavaScript ularni lug'atdagi so'zlar kabi solishtiradi. Bu leksikografik (lug'at tartibidagi) taqqoslash deyiladi.

js
console.log("anor" < "uzum"); // true
console.log("olma" < "olcha"); // false
console.log("Ali" < "Alisher"); // true

Qanday ishlaydi? JavaScript satrlarni birinchi belgidan boshlab, belgima-belgi solishtiradi:

  1. Birinchi belgilar har xil bo'lsa — javob shu belgilar bo'yicha. "anor" va "uzum": a < u, demak true.
  2. Bir xil bo'lsa — keyingi belgiga o'tadi. "olma" va "olcha": o=o, l=l, keyin m va c. m alifboda c dan keyin keladi, demak "olma" katta — false.
  3. Bittasi tugab qolsa — qisqasi kichik. "Ali" — "Alisher" ning boshi, demak "Ali" kichik.

3.2 Aslida — belgi kodlari

"Qaysi harf kichik" degan savolga JavaScript alifbo emas, belgi kodi bilan javob beradi. Kompyuterda har bir belgining raqami bor — buni matn kodlash darsida ko'rgan edingiz (ASCII, Unicode).

Belgi Kodi Belgi Kodi
bo'sh joy 32 A 65
' apostrof 39 Z 90
0 48 a 97
9 57 z 122

Jadvaldan uchta muhim qoida chiqadi:

  • Raqamlar harflardan oldin turadi.
  • Hamma katta harflar kichik harflardan oldin turadi: Z (90) < a (97).
  • Apostrof va bo'sh joy harflardan ham oldin.
js
console.log("Zafar" < "anvar"); // true
console.log("Olma" < "anor"); // true
console.log("salom" > "Salom"); // true

"Zafar" < "anvar" — true, garchi alifboda Z oxirida tursa ham. Katta Z ning kodi (90) kichik a nikidan (97) kichik.

Maslahat: Belgi kodini o'zingiz ko'rishingiz mumkin: console.log("a".charCodeAt(0)) → 97. Bu satr metodi — metodlarni satrlar darslarida o'rganamiz, hozir bilish shart emas.

3.3 O'zbek so'zlari va tuzoq

O'zbek lotin alifbosida O' harfi Z dan keyin keladi. JavaScript esa buni bilmaydi:

js
console.log("o'rik" < "zira"); // true

JavaScript uchun "o'rik" — o harfi, keyin apostrof (kod 39). U o'rikni ziradan oldin qo'yadi. O'zbek lug'atida esa aksincha: o'rik ziradan keyin turadi. sh, ch, g' harflarida ham shunday muammo bor.

Demak, < va > — "kompyuter tartibi", haqiqiy til tartibi emas. Ismlarni yoki so'zlarni til qoidalariga mos saralash uchun maxsus vosita bor — localeCompare. Uni massivni saralash darsida ko'ramiz.

3.4 Eng mashhur tuzoq: "10" < "9"

js
console.log(10 < 9); // false
console.log("10" < "9"); // true

Sonlar sifatida — 10 katta. Satrlar sifatida esa — "10" kichik! Nega?

Satrlar belgima-belgi solishtiriladi. Birinchi belgilar: "1" va "9". "1" ning kodi (49) "9" nikidan (57) kichik. Shu yerda javob tayyor — keyingi belgilar umuman ko'rilmaydi.

Xuddi shu sabab bilan "100" < "20" ham true. Bu tuzoq qayerda chiqadi? Foydalanuvchi saytga kiritgan sonlar, fayldan o'qilgan ma'lumotlar — hammasi satr bo'lib keladi. Ularni solishtirishdan oldin songa aylantiring — masalan, oldingi darsdagi unar + bilan:

js
const a = "10";
const b = "9";

console.log(a < b); // true
console.log(+a < +b); // false

Tekshirib ko'ring: "Botir" < "anvar" va "botir" < "anvar" natijalari qanday?

Javob

"Botir" < "anvar" — true: katta B (66) kichik a (97) dan oldin turadi. "botir" < "anvar" — false: ikkalasi kichik harf, b alifboda a dan keyin. Birinchi harfning katta-kichikligi butun natijani o'zgartirdi.

4. Har xil turlarni solishtirish

4.1 Son va satr: satr songa aylanadi

Bir tomonda son, bir tomonda satr bo'lsa, JavaScript satrni songa aylantiradi va sonlarni solishtiradi:

js
console.log("10" > 9); // true
console.log("2" > 12); // false
console.log("100" < 20); // false

Oldingi bo'limdagi "100" < "20" — true edi (ikkalasi satr). Bu yerda "100" < 20 — false, chunki 20 son. Bitta qo'shtirnoq butun javobni o'zgartirdi.

Qoida qisqasi:

Chap O'ng Qanday solishtiriladi
satr satr belgima-belgi (lug'at tartibi)
son son son sifatida
satr son satr songa aylanadi

4.2 Songa aylanmaydigan satr

Satr songa aylanmasa-chi? Masalan, "salom":

js
console.log("salom" < 5); // false
console.log("salom" >= 5); // false

Ikkalasi ham false! "salom" songa aylantirilganda NaN chiqadi. NaN bilan esa har qanday taqqoslash false (5-bo'limda batafsil).

4.3 Boshqa aralash holatlar (qisqa tanishuv)

Boolean, null va undefined ham solishtirishda songa aylanadi. Natijalar ba'zan g'alati:

js
console.log(true > false); // true
console.log(null >= 0); // true
console.log(null > 0); // false
console.log(undefined > 0); // false
console.log(undefined < 0); // false
  • true → 1, false → 0. Shuning uchun true > false.
  • null → 0. Shuning uchun null >= 0 — true, lekin null > 0 — false.
  • undefined → NaN. Shuning uchun u bilan hamma taqqoslash false.

Bu qoidalarni yodlash shart emas. Asosiy xulosa: har xil turlarni solishtirmang. Solishtirishdan oldin ikkala tomon bir xil turda ekaniga ishonch hosil qiling. Turlar qanday o'zgarishini yashirin coercion darsida ichidan ko'ramiz.

Tekshirib ko'ring: "50" > 7 va "50" > "7" natijalari qanday?

Javob

"50" > 7 — true: o'ng tomonda son bor, shuning uchun "50" songa aylanadi va 50 > 7. "50" > "7" — false: ikkalasi satr, birinchi belgilar solishtiriladi — "5" (53) "7" (55) dan kichik.

5. NaN — hech narsaga teng emas, hech narsadan katta emas

5.1 Har doim false

NaN bilan har qanday taqqoslash false qaytaradi. Hatto NaN ning o'zi bilan ham:

js
console.log(NaN > 5); // false
console.log(NaN < 5); // false
console.log(NaN >= NaN); // false
console.log(NaN <= NaN); // false

Nega? NaN — "buzilgan hisob natijasi". U aslida qaysi son ekani noma'lum. Noma'lum narsa 5 dan kattami? Aytib bo'lmaydi. Shuning uchun JavaScript har doim "yo'q" deydi.

5.2 Nega bu xavfli?

Odatda "5 dan kichik emas" degani "5 dan katta yoki teng" degani. NaN da esa bu mantiq buziladi:

js
const narx = +"arzon";

console.log(narx); // NaN
console.log(narx < 100000); // false
console.log(narx >= 100000); // false

Narx "100 000 dan kichik" ham emas, "katta yoki teng" ham emas. Agar dasturingiz "arzon emas, demak qimmat" deb xulosa qilsa — adashadi. Solishtirishdan oldin qiymat haqiqatan son ekanini tekshiring. Buning usullarini matn va sonni tekshirish darsida o'rganamiz.

Tekshirib ko'ring: const x = 0 / 0; bo'lsa, x < 1 va x >= 1 nima qaytaradi?

Javob

Ikkalasi ham false. 0 / 0 — NaN (oldingi darsda ko'rgan edik). NaN bilan har qanday <, >, <=, >= — false.

6. Tenglik haqida bir og'iz

Siz "katta yoki teng" (>=) ni bilasiz. Xo'sh, faqat "teng" qanday tekshiriladi?

= bilan emas! = — tayinlash: "o'ngdagini chapga yoz". Tenglikni tekshirish uchun JavaScript'da alohida operatorlar bor: === ("qat'iy teng") va == ("yumshoq teng"). Ularni typeof va undefined va null darslarida qisqa ishlatgan edik. Ularning farqi juda muhim va tuzoqlarga boy. Shuning uchun ularga butun bir dars ajratilgan — keyingi dars.

7. Ko'p uchraydigan xatolar

7.1 => va =< — belgilar teskari

js
const yosh = 20;
console.log(yosh =< 18);
text
SyntaxError: Unexpected token '<'

Tarjimasi: "Kutilmagan belgi: <". JavaScript = ni ko'rib, bu tayinlash deb o'yladi. Uning ortidan < kelishini esa kutmagan edi. To'g'risi — <=: teng belgisi doim ikkinchi.

=> bilan esa bundan ham yomon — xato chiqmaydi:

js
const yosh = 20;
console.log(yosh => 18); // [Function (anonymous)]

=> JavaScript'da mavjud belgi — u arrow funksiya yasaydi. Kod boshqa narsani bajardi va true/false o'rniga funksiya chiqardi. Konsolda [Function ...] ko'rsangiz, >= o'rniga => yozmaganingizni tekshiring. Brauzer konsolida bu yosh => 18 ko'rinishida chiqadi — ma'nosi bir xil.

7.2 Ikki taqqoslashni zanjir qilish

Matematikada 1 < x < 10 — "x 1 bilan 10 orasida". JavaScript'da bunday yozuv ishlamaydi — to'g'rirog'i, noto'g'ri ishlaydi:

js
console.log(1 < 3 < 2); // true
console.log(3 > 2 > 1); // false

"3 soni 1 va 2 orasidami?" — true?! Qadamma-qadam ko'ramiz. Taqqoslash chapdan o'ngga bajariladi:

  1. 1 < 3 → true.
  2. Endi true < 2. true songa aylanadi: 1 < 2 → true.

3 > 2 > 1 da ham shunday: 3 > 2 → true, keyin true > 1 → 1 > 1 → false.

To'g'ri yozuv — ikki taqqoslashni "va" so'zi bilan bog'lash: 1 < x && x < 10. && operatorini mantiqiy operatorlar darsida o'rganamiz.

7.3 Satr ko'rinishidagi sonlarni solishtirish

"10" < "9" — true. Sonlar satr bo'lib kelsa (formadan, fayldan), avval songa aylantiring: +a < +b.

7.4 Kasr sonlarni aniq chegarada solishtirish

js
console.log(0.1 + 0.2 > 0.3); // true

Oldingi darsda ko'rdik: 0.1 + 0.2 aslida 0.30000000000000004. Shuning uchun u 0.3 dan "katta" chiqadi. Kasr sonlarni aniq chegarada solishtirishning to'g'ri usulini Number turi darsida ko'ramiz.

8. Mashqlar

1-mashq (oson): Kinoteatr

Kinoga kirish shartlari: yoshi kamida 16, chipta 45 000 so'm. Aziz 17 yoshda, hamyonida 40 000 so'm bor.

Ikki boolean o'zgaruvchi yarating va konsolga chiqaring:

  • yoshiYetadi — yoshi yetadimi?
  • puliYetadi — puli yetadimi?
Yechim
js
const yosh = 17;
const hamyon = 40000;
const chiptaNarxi = 45000;

const yoshiYetadi = yosh >= 16;
const puliYetadi = hamyon >= chiptaNarxi;

console.log("Yoshi yetadi:", yoshiYetadi);
console.log("Puli yetadi:", puliYetadi);

Konsolda:

text
Yoshi yetadi: true
Puli yetadi: false

"Kamida 16" — "16 yoki undan katta", shuning uchun >=. Puli uchun ham >=: aynan 45 000 bo'lsa ham, yetadi.

2-mashq (o'rta): Natijani oldindan ayting

Har bir qator natijasini to'ldiring. Avval o'ylang, keyin kodni ishga tushirib tekshiring.

  • "Toshkent" < "Samarqand" natijasi:
  • "toshkent" < "Samarqand" natijasi:
  • "25" < "3" natijasi:
  • "25" < 3 natijasi:
  • NaN <= 100 natijasi:
Yechim
js
console.log("Toshkent" < "Samarqand"); // false
console.log("toshkent" < "Samarqand"); // false
console.log("25" < "3"); // true
console.log("25" < 3); // false
console.log(NaN <= 100); // false
  • "Toshkent" va "Samarqand": T (84) > S (83), demak false.
  • "toshkent": kichik t (116) har qanday katta harfdan katta, demak yana false.
  • "25" < "3": ikkalasi satr, "2" < "3" — true.
  • "25" < 3: o'ngda son, "25" songa aylanadi, 25 < 3 — false.
  • NaN bilan har qanday taqqoslash — false.

3-mashq (qiyin): Xatoni toping

Onlayn do'konda "Chegirma" tugmasi mahsulot soni 10 tadan ko'p bo'lsa chiqishi kerak. Soni formadan keladi, shuning uchun satr. Jasur shunday kod yozdi:

js
const soni = "9";
const chegirmaBor = soni > "10";

console.log(chegirmaBor);
  1. Konsolda nima chiqadi? Nega bu noto'g'ri?
  2. Kodni tuzating.
  3. Tekshiring: soni "9", "10" va "25" bo'lganda natija to'g'ri chiqsin.
Yechim
  1. true chiqadi. Ikkalasi ham satr, shuning uchun belgima-belgi solishtiriladi: "9" > "1". Dastur 9 tani 10 dan ko'p deb o'yladi — noto'g'ri.

  2. Tuzatish: satrni songa aylantiramiz va son bilan solishtiramiz.

js
const soni = "9";
const chegirmaBor = +soni > 10;

console.log(chegirmaBor); // false
  1. Uchala holatni tekshiramiz:
js
console.log(+"9" > 10); // false
console.log(+"10" > 10); // false
console.log(+"25" > 10); // true

"10" da ham false — to'g'ri, chunki shart "10 tadan ko'p", ya'ni >, >= emas. Chegara qiymatni har doim alohida tekshiring.

9. Real ishda

Taqqoslash — dasturdagi deyarli har bir qarorning asosi:

  • Ro'yxatdan o'tish: yosh chegarasi, parol uzunligi (parol.length >= 8).
  • Internet-do'kon: narx filtri ("100 000 so'mdan arzon"), bepul yetkazib berish chegarasi.
  • Bank ilovalari: balans yetarlimi, limit oshmadimi.
  • Saralash: mahsulotlarni narx bo'yicha, ismlarni alifbo bo'yicha tartiblash — < va > ichkarida ishlaydi.

"10" < "9" tuzog'i real loyihalarda juda ko'p uchraydi: fayl nomlari (rasm10.jpg rasm9.jpg dan oldin turadi), versiya raqamlari, formadan kelgan sonlar. Intervyuda ham so'raladi: ""10" < "9" nega true?", "NaN bilan taqqoslash nima beradi?", "null >= 0 nega true?".

Xulosa

  • >, <, >=, <= — ikki qiymatni solishtiradi va boolean qaytaradi. Teng belgisi doim ikkinchi: >=, <=.
  • Satrlar belgima-belgi, belgi kodi bo'yicha solishtiriladi: katta harflar kichiklardan oldin, "10" < "9".
  • Satr va son solishtirilsa, satr songa aylanadi. Eng yaxshisi — turlarni oldindan bir xil qiling.
  • NaN bilan har qanday taqqoslash false.
  • 1 < x < 10 JavaScript'da ishlamaydi — ikki taqqoslash kerak.
  • Tenglik = bilan emas, === bilan tekshiriladi — keyingi darsda.

Keyingi dars: Tenglik: ==, === va Object.is — ikki qiymat teng ekanini qanday tekshirish va nega deyarli har doim === ishlatish kerakligini o'rganamiz.

Ulashish:Telegram'da

Izohlar (0)

Izoh yozish uchun kiring.

  • Hozircha izoh yo'q. Birinchi bo'ling!
JavaScript taqqoslash operatorlari: >, <, >=, <= va satrlarni solishtirish — IlmHamroh