Mundarija (30)
- Bu darsda
- 1. Nega bu kerak?
- 2. To'rtta taqqoslash operatori
- 2.1 Maktabdagi belgilar
- 2.2 Natijani o'zgaruvchiga saqlash
- 2.3 Hisob bilan birga
- 3. Satrlarni solishtirish
- 3.1 Lug'at tartibi
- 3.2 Aslida — belgi kodlari
- 3.3 O'zbek so'zlari va tuzoq
- 3.4 Eng mashhur tuzoq: "10" < "9"
- 4. Har xil turlarni solishtirish
- 4.1 Son va satr: satr songa aylanadi
- 4.2 Songa aylanmaydigan satr
- 4.3 Boshqa aralash holatlar (qisqa tanishuv)
- 5. NaN — hech narsaga teng emas, hech narsadan katta emas
- 5.1 Har doim false
- 5.2 Nega bu xavfli?
- 6. Tenglik haqida bir og'iz
- 7. Ko'p uchraydigan xatolar
- 7.1 => va =< — belgilar teskari
- 7.2 Ikki taqqoslashni zanjir qilish
- 7.3 Satr ko'rinishidagi sonlarni solishtirish
- 7.4 Kasr sonlarni aniq chegarada solishtirish
- 8. Mashqlar
- 1-mashq (oson): Kinoteatr
- 2-mashq (o'rta): Natijani oldindan ayting
- 3-mashq (qiyin): Xatoni toping
- 9. Real ishda
- Xulosa
JavaScript taqqoslash operatorlari: >, <, >=, <= va satrlarni solishtirish
Qisqacha: Taqqoslash operatorlari —
>,<,>=,<=— ikki qiymatni solishtirib,trueyokifalseqaytaradi. Sonlar matematikadagidek solishtiriladi. Satrlar esa lug'atdagidek, belgima-belgi solishtiriladi — shuning uchun"10" < "9"natijasitrue.NaNbilan har qanday taqqoslashfalseberadi.
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 < 2va=>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 |
console.log(10 > 3); // true
console.log(10 < 3); // false
console.log(5 >= 5); // true
console.log(5 > 5); // false
console.log(-1 < 0); // true5 >= 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:
const yosh = 20;
const balogatga = yosh >= 18;
console.log(balogatga); // true
console.log(typeof balogatga); // booleanIkkinchi 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:
const hamyon = 50000;
const osh = 35000;
const choy = 6000;
console.log(osh + choy <= hamyon); // trueAvval 35000 + 6000 = 41000, keyin 41000 <= 50000 → true. Demak, pul yetadi.
Tekshirib ko'ring:
const ball = 71;bo'lsa,ball >= 71vaball > 71natijalari 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.
console.log("anor" < "uzum"); // true
console.log("olma" < "olcha"); // false
console.log("Ali" < "Alisher"); // trueQanday ishlaydi? JavaScript satrlarni birinchi belgidan boshlab, belgima-belgi solishtiradi:
- Birinchi belgilar har xil bo'lsa — javob shu belgilar bo'yicha.
"anor"va"uzum":a<u, demaktrue. - Bir xil bo'lsa — keyingi belgiga o'tadi.
"olma"va"olcha":o=o,l=l, keyinmvac.malifbodacdan keyin keladi, demak"olma"katta —false. - 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.
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:
console.log("o'rik" < "zira"); // trueJavaScript 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"
console.log(10 < 9); // false
console.log("10" < "9"); // trueSonlar 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:
const a = "10";
const b = "9";
console.log(a < b); // true
console.log(+a < +b); // falseTekshirib 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:
console.log("10" > 9); // true
console.log("2" > 12); // false
console.log("100" < 20); // falseOldingi 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":
console.log("salom" < 5); // false
console.log("salom" >= 5); // falseIkkalasi 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:
console.log(true > false); // true
console.log(null >= 0); // true
console.log(null > 0); // false
console.log(undefined > 0); // false
console.log(undefined < 0); // falsetrue→1,false→0. Shuning uchuntrue > false.null→0. Shuning uchunnull >= 0—true, lekinnull > 0—false.undefined→NaN. Shuning uchun u bilan hamma taqqoslashfalse.
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" > 7va"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:
console.log(NaN > 5); // false
console.log(NaN < 5); // false
console.log(NaN >= NaN); // false
console.log(NaN <= NaN); // falseNega? 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:
const narx = +"arzon";
console.log(narx); // NaN
console.log(narx < 100000); // false
console.log(narx >= 100000); // falseNarx "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 < 1vax >= 1nima 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
const yosh = 20;
console.log(yosh =< 18);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:
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:
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 < 3→true.- Endi
true < 2.truesonga 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
console.log(0.1 + 0.2 > 0.3); // trueOldingi 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
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:
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" < 3natijasi:NaN <= 100natijasi:
Yechim
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), demakfalse."toshkent": kichikt(116) har qanday katta harfdan katta, demak yanafalse."25" < "3": ikkalasi satr,"2"<"3"—true."25" < 3: o'ngda son,"25"songa aylanadi,25 < 3—false.NaNbilan 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:
const soni = "9";
const chegirmaBor = soni > "10";
console.log(chegirmaBor);- Konsolda nima chiqadi? Nega bu noto'g'ri?
- Kodni tuzating.
- Tekshiring:
soni"9","10"va"25"bo'lganda natija to'g'ri chiqsin.
Yechim
truechiqadi. Ikkalasi ham satr, shuning uchun belgima-belgi solishtiriladi:"9">"1". Dastur 9 tani 10 dan ko'p deb o'yladi — noto'g'ri.Tuzatish: satrni songa aylantiramiz va son bilan solishtiramiz.
const soni = "9";
const chegirmaBor = +soni > 10;
console.log(chegirmaBor); // false- Uchala holatni tekshiramiz:
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.
NaNbilan har qanday taqqoslashfalse.1 < x < 10JavaScript'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.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!