Mundarija (33)
- Bu darsda
- 1. Nega bu kerak?
- 2. && — "va" (AND)
- 2.1 Ikkala tomon ham rost bo'lishi kerak
- 2.2 Sonni oraliqda tekshirish
- 3. || — "yoki" (OR)
- 4. ! — "emas" (NOT)
- 5. && va || aslida nima qaytaradi?
- 5.1 Ular tomonlardan birini qaytaradi
- 5.2 Uzun zanjirlar
- 6. Qisqa tutashuv (short-circuit)
- 6.1 Javob ma'lum bo'lsa, qolgani bajarilmaydi
- 6.2 Hisoblanmagan qism xato ham bermaydi
- 7. Qisqa tutashuv amalda
- 7.1 Default qiymat: || bilan zaxira
- 7.2 Default qiymat tuzog'i: 0 va ""
- 7.3 Shartli bajarish: && bilan
- 8. Qaysi operator avval ishlaydi?
- 9. De Morgan qonunlari
- 9.1 Inkorni qavs ichiga kiritish
- 9.2 Kodda tekshiramiz
- 10. Ko'p uchraydigan xatolar
- 10.1 Oraliqni 60 <= ball <= 100 deb yozish
- 10.2 Bitta & yoki | yozish
- 10.3 ! ning qayerga ta'sir qilishini unutish
- 10.4 and, or so'zlarini yozish
- 10.5 || bilan 0 ni yo'qotish
- 11. Mashqlar
- 1-mashq (oson): Natijani toping
- 2-mashq (o'rta): Bot salomlashuvi
- 3-mashq (qiyin): Metro turniketi
- 12. Real ishda
- Xulosa
JavaScript mantiqiy operatorlar: &&, ||, ! va qisqa tutashuv
Qisqacha: Mantiqiy operatorlar shartlarni birlashtiradi:
&&(va) — ikkala tomon rost bo'lsa,||(yoki) — kamida bittasi rost bo'lsa rost,!(emas) — qiymatni teskarisiga aylantiradi. Aslida&&va||doim hamtrue/falseqaytarmaydi. Ular tomonlardan birining o'zini qaytaradi va javob ma'lum bo'lishi bilan to'xtaydi — bu qisqa tutashuv deb ataladi.
Bu darsda
&&,||va!bilan bir nechta shartni bitta ifodaga birlashtira olasiz.&&va||aslida nima qaytarishini tushuntira olasiz.- Qisqa tutashuv (short-circuit) nima ekanini va nega foydali ekanini bilasiz.
ism || "Mehmon"kabi default qiymat naqshini va uning tuzog'ini taniysiz.- De Morgan qonunlari bilan inkor qilingan shartlarni soddalashtira olasiz.
Oldin bilishingiz kerak: Boolean va truthy/falsy qiymatlar, Taqqoslash operatorlari, Tenglik: ==, === va Object.is.
1. Nega bu kerak?
O'tgan darsda ikki qiymatni === bilan solishtirishni o'rgandik. Lekin hayotda savollar ko'pincha bitta shartdan iborat bo'lmaydi.
Masalan, bankomatdan pul yechish. Bankomat ikki narsani tekshiradi: PIN kod to'g'rimi va kartada pul yetarlimi. Ikkalasi ham rost bo'lsagina pul beradi.
Metroga kirish esa boshqacha. Siz karta bilan yoki telefondagi QR-kod bilan o'tishingiz mumkin. Bittasi bo'lsa yetarli.
Shu paytgacha biz faqat bitta shartni tekshira olardik. Mantiqiy operatorlar esa bir nechta shartni birlashtiradi:
const pinTogri = true;
const balans = 300000;
const summa = 200000;
console.log(pinTogri && balans >= summa); // trueBu qator "PIN to'g'ri va balans yetarlimi?" degan savolga javob beradi.
2. && — "va" (AND)
2.1 Ikkala tomon ham rost bo'lishi kerak
Mantiqiy operator (logical operator) — mantiqiy qiymatlar (true/false) ustida ishlaydigan operator. Birinchisi — &&, "va" deb o'qiladi. Uning natijasi faqat ikkala tomon ham true bo'lganda true bo'ladi.
Barcha to'rt holat:
a |
b |
a && b |
|---|---|---|
true |
true |
true |
true |
false |
false |
false |
true |
false |
false |
false |
false |
Bunday jadval haqiqat jadvali (truth table) deb ataladi. U operatorning hamma mumkin bo'lgan natijasini ko'rsatadi.
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false2.2 Sonni oraliqda tekshirish
&& ning eng ko'p ishlatilishi — qiymat ikki chegara orasidami, shuni tekshirish. Masalan, test bali 60 dan 100 gacha bo'lsa, talaba o'tgan hisoblanadi:
const ball = 75;
console.log(ball >= 60 && ball <= 100); // trueJavaScript avval ikkala taqqoslashni hisoblaydi: 75 >= 60 — true, 75 <= 100 — true. Keyin true && true — true.
Diqqat: Matematikadagi kabi
60 <= ball <= 100deb yozmang. JavaScript buni boshqacha tushunadi — bu haqda "Ko'p uchraydigan xatolar" bo'limida.
3. || — "yoki" (OR)
|| — "yoki" deb o'qiladi. Kamida bitta tomon true bo'lsa, natija true. Faqat ikkalasi ham false bo'lganda — false.
a |
b |
"yoki" natijasi |
|---|---|---|
true |
true |
true |
true |
false |
true |
false |
true |
true |
false |
false |
false |
| belgisi klaviaturada odatda Enter tugmasi yonida, \ bilan bir tugmada turadi. Shift bilan bosiladi.
Misol: dam olish kunini aniqlaymiz. Kun shanba yoki yakshanba bo'lsa — dam olish:
const kun = "yakshanba";
console.log(kun === "shanba" || kun === "yakshanba"); // trueBirinchi taqqoslash false, ikkinchisi true. false || true — true.
Tekshirib ko'ring:
const yosh = 15;bo'lsa,console.log(yosh >= 18 || yosh === 15)nima chiqaradi?
Javob
true. Birinchi shart 15 >= 18 — false. Ikkinchisi 15 === 15 — true. || uchun bitta true yetarli.
4. ! — "emas" (NOT)
! bitta qiymatni teskarisiga aylantiradi: true → false, false → true. U qiymatning oldiga yoziladi:
const bandmi = false;
console.log(!bandmi); // true
console.log(!true); // falseHaydovchi band emasmi? !bandmi — true, demak u bo'sh.
! har qanday qiymat bilan ishlaydi. Avval qiymatni truthy yoki falsy ekaniga qarab boolean'ga aylantiradi, keyin teskarisini oladi:
console.log(!""); // true
console.log(!"salom"); // false
console.log(!0); // true
console.log(!!"salom"); // trueOxirgi qatorni eslang: ikkita !! — "ikki marta teskari", ya'ni qiymatning truthy yoki falsy ekanini true/false ko'rinishida beradi. Buni truthy/falsy darsida ko'rgansiz.
! doim true yoki false qaytaradi. && va || esa — yo'q. Bu keyingi bo'limning mavzusi.
Tekshirib ko'ring:
console.log(!null)vaconsole.log(!"0")nima chiqaradi?
Javob
!null — true, chunki null falsy. !"0" — false, chunki "0" bo'sh bo'lmagan satr, demak truthy. Ichida nol yozilgani ahamiyatsiz.
5. && va || aslida nima qaytaradi?
5.1 Ular tomonlardan birini qaytaradi
Endi darsning eng muhim qismi. Keling, && va || ni boolean bo'lmagan qiymatlar bilan sinab ko'ramiz:
console.log("Ali" || "Mehmon"); // Ali
console.log(null || "Mehmon"); // Mehmon
console.log("Ali" && "Vali"); // Vali
console.log(0 && "Vali"); // 0Hech qayerda true yoki false chiqmadi! && va || natija sifatida tomonlardan birining o'zini qaytaradi. Qaysi birini — oddiy qoida bor.
a || b qoidasi: a truthy bo'lsa — a ni qaytaradi. Aks holda — b ni.
a && b qoidasi: a falsy bo'lsa — a ni qaytaradi. Aks holda — b ni.
Qisqasi:
||birinchi truthy qiymatni qidiradi.&&birinchi falsy qiymatni qidiradi.
Qaytarilgan qiymat bu yerda boolean'ga aylantirilmaydi. 0 && "Vali" natijasi false emas, aynan 0.
Nega true && false baribir false beradi? Chunki tomonlar allaqachon boolean. Qoida bo'yicha tomonlardan biri qaytadi — u ham boolean bo'ladi.
5.2 Uzun zanjirlar
Bir nechta || yoki && ketma-ket kelsa ham qoida o'sha. Chapdan o'ngga qarab qidiriladi:
console.log(null || 0 || "zaxira" || "boshqa"); // zaxira
console.log(null || 0 || undefined); // undefined
console.log(1 && "a" && 0 && "b"); // 0
console.log(1 && "a" && "b"); // b- Birinchi qatorda
nullva0falsy. Birinchi truthy —"zaxira". - Ikkinchi qatorda truthy umuman yo'q. Bunda oxirgi qiymat qaytadi —
undefined. - Uchinchi qatorda birinchi falsy —
0. - To'rtinchi qatorda falsy yo'q. Oxirgi qiymat —
"b".
Bo'sh joylarni to'ldiring: "" || "Mehmon" ning natijasi [:Mehmon], "Malika" && 0 niki esa [:0].
Tekshirib ko'ring:
console.log(undefined || "Toshkent")vaconsole.log("Toshkent" && undefined)nima chiqaradi?
Javob
Birinchisi Toshkent: undefined falsy, shuning uchun || o'ng tomonni qaytaradi. Ikkinchisi undefined: "Toshkent" truthy, shuning uchun && o'ng tomonni qaytaradi — u esa undefined.
6. Qisqa tutashuv (short-circuit)
6.1 Javob ma'lum bo'lsa, qolgani bajarilmaydi
false && ... ni ko'ring. O'ng tomonda nima bo'lishidan qat'i nazar, natija baribir false. Xuddi shunday, true || ... doim true.
JavaScript buni biladi va o'ng tomonni umuman hisoblamaydi. Bu qisqa tutashuv (short-circuit evaluation) deb ataladi: natija ma'lum bo'lishi bilan hisoblash to'xtaydi.
O'xshatish: klubdagi qo'riqchi. Avval yoshingizni so'raydi. 18 dan kichik bo'lsangiz, taklifnomangizga qaramaydi ham — javob allaqachon "yo'q".
Buni ko'z bilan ko'rish mumkin. console.log(...) ni operatorning o'ng tomoniga qo'yamiz. U ishlasa — konsolda matn chiqadi, ishlamasa — chiqmaydi:
console.log("Boshlandi");
false && console.log("A: && dan keyin");
true && console.log("B: && dan keyin");
true || console.log("C: || dan keyin");
false || console.log("D: || dan keyin");
console.log("Tugadi");Konsolda:
Boshlandi
B: && dan keyin
D: || dan keyin
TugadiBu yerda har bir qator — alohida ifoda. Sintaksis darsida ko'rganingizdek, ifoda o'zi ham kod qatori bo'la oladi.
Achiqmadi:false && ...— javobfalse, o'ng tomonga qaralmadi.Bchiqdi:true && ...— javob o'ng tomonga bog'liq, shuning uchun u bajarildi.Cchiqmadi:true || ...— javobtrue, o'ng tomon kerak emas.Dchiqdi:false || ...— javob o'ng tomonga bog'liq.
6.2 Hisoblanmagan qism xato ham bermaydi
Qisqa tutashuvning kuchi shundaki, o'tkazib yuborilgan qism umuman ishlamaydi. Unda xato bo'lsa ham:
let hisob = 0;
false && hisob++;
console.log(hisob); // 0
true && hisob++;
console.log(hisob); // 1Birinchi hisob++ bajarilmadi — hisob o'zgarmadi. Ikkinchisi bajarildi.
E'lon qilinmagan nom ham false && dan keyin xato bermaydi:
false && nomalumNarsa;
console.log("Xato chiqmadi");Konsolda:
Xato chiqmadiLekin true && dan keyin JavaScript o'ng tomonni hisoblashga majbur:
true && nomalumNarsa;ReferenceError: nomalumNarsa is not definedTarjimasi: "nomalumNarsa aniqlanmagan". Bu xato nomning o'zida — bunday o'zgaruvchi yo'q. Lekin u faqat o'ng tomon haqiqatan hisoblanganda chiqadi.
Tekshirib ko'ring: Quyidagi kod nima chiqaradi?
jslet tanga = 5; true || tanga++; console.log(tanga);
Javob
5. true || ... — natija birinchi tomonda ma'lum bo'ldi, shuning uchun tanga++ bajarilmadi.
7. Qisqa tutashuv amalda
7.1 Default qiymat: || bilan zaxira
|| birinchi truthy qiymatni qaytarishidan foydali naqsh kelib chiqadi. Default qiymat — qiymat bo'lmasa ishlatiladigan zaxira qiymat.
Telegram bot foydalanuvchining ismini so'radi. U ismini yozmasa, "Mehmon" deb murojaat qilamiz:
const kiritilganIsm = "";
const ism = kiritilganIsm || "Mehmon";
console.log("Salom,", ism); // Salom, MehmonkiritilganIsm bo'sh satr — falsy. Shuning uchun || o'ng tomonni, "Mehmon" ni qaytardi. Ism bo'lganda esa ism o'zi qaytadi:
const kiritilganIsm = "Malika";
const ism = kiritilganIsm || "Mehmon";
console.log("Salom,", ism); // Salom, MalikaMaslahat:
console.logga vergul bilan bir nechta qiymat bersangiz, u ularni bo'sh joy bilan ajratib chiqaradi. Shuning uchun"Salom,"va ism orasida bo'sh joy paydo bo'ldi.
Bir nechta zaxira ham bo'lishi mumkin: ism || taxallus || "Mehmon". Birinchi to'ldirilgani olinadi.
7.2 Default qiymat tuzog'i: 0 va ""
|| hamma falsy qiymatni "yo'q" deb hisoblaydi. Lekin ba'zan 0 yoki "" — haqiqiy, ataylab tanlangan qiymat.
Choyxona ilovasida mijoz choyga necha qoshiq shakar solishni tanlaydi. Tanlamasa — 2 qoshiq. Mijoz ataylab 0 ni tanladi:
const tanlanganShakar = 0; // mijoz shakarsiz choy xohlaydi
const shakar = tanlanganShakar || 2;
console.log(shakar); // 2Mijoz shakarsiz choy so'radi, dastur esa 2 qoshiq soldi! 0 falsy, shuning uchun || uni tashlab, zaxirani oldi.
Bu tuzoqning tayyor yechimi bor — ?? operatori. U faqat null va undefined da zaxiraga o'tadi. Uni undefined va null darsida qisqa ko'rgan edik, keyingi darsda to'liq o'rganamiz.
7.3 Shartli bajarish: && bilan
&& ning o'ng tomoni faqat chap tomon truthy bo'lsa bajariladi. Bundan "shart rost bo'lsa, shu ishni qil" degan qisqa yozuv chiqadi:
const onlaynmi = true;
const yangiXabarlar = 0;
onlaynmi && console.log("Foydalanuvchi onlayn");
yangiXabarlar && console.log("Yangi xabar bor");Konsolda:
Foydalanuvchi onlaynyangiXabarlar — 0, falsy. Shuning uchun ikkinchi xabar chiqmadi.
Bu yozuv real kodda tez-tez uchraydi. Lekin oddiy "agar ... bo'lsa" uchun if ko'rsatmasi ancha tushunarli. Uni tez orada o'rganamiz. Hozircha && ning bu imkoniyatini taniy olsangiz yetarli.
8. Qaysi operator avval ishlaydi?
Bir ifodada bir nechta operator bo'lsa, ular ma'lum tartibda bajariladi:
!— eng birinchi.&&— keyin.||— eng oxirida.
Xuddi matematikada ko'paytirish qo'shishdan oldin bajarilgani kabi.
console.log(true || false && false); // true
console.log((true || false) && false); // falseBirinchi qatorda avval false && false hisoblandi — false. Keyin true || false — true. Ikkinchi qatorda qavs tartibni o'zgartirdi.
Shubha bo'lsa — qavs qo'ying. Qavs kodni o'qiyotgan odamga ham yordam beradi. Operatorlarning to'liq tartibini operatorlar ustuvorligi darsida ko'ramiz.
9. De Morgan qonunlari
9.1 Inkorni qavs ichiga kiritish
Ba'zan shart oldida ! va qavs turadi: !(a && b). Bunday ifodani o'qish qiyin. Mantiqda uni soddalashtiradigan ikki qoida bor — De Morgan qonunlari. Ularni XIX asrdagi ingliz matematigi Augustus De Morgan ta'riflagan.
| Bu ifoda | Shunga teng |
|---|---|
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
Qoida: ! ni qavs ichiga kiritganda, har bir qiymat teskarisiga aylanadi, && esa || ga almashadi (va aksincha).
Hayotdan misol: "Bugun yomg'ir ham, qor ham yog'mayapti". Buni ikki xil aytish mumkin:
- "Yomg'ir yoki qor yog'yapti" degan gap — yolg'on:
!(yomgir || qor). - Yomg'ir yog'mayapti va qor yog'mayapti:
!yomgir && !qor.
Ma'nosi bir xil.
9.2 Kodda tekshiramiz
Do'kon kechasi va dam olish kunlari yopiq. Do'kon ochiqmi?
const tunmi = false;
const damOlishmi = true;
console.log(!(tunmi || damOlishmi)); // false
console.log(!tunmi && !damOlishmi); // falseIkki yozuv bir xil natija berdi. Ikkinchisi uzunroq, lekin "tun emas va dam olish kuni emas" deb to'g'ridan-to'g'ri o'qiladi.
Qaysi biri qulay — vaziyatga bog'liq. Asosiysi: murakkab inkorni ko'rganda uni De Morgan bilan "yoyib", tushunish osonlashadi.
Tekshirib ko'ring:
!(ball > 50 && davomat > 80)ni De Morgan qonuni bilan qayta yozing.
Javob
!(ball > 50) || !(davomat > 80), ya'ni ball <= 50 || davomat <= 80. ! ichkariga kirdi, && esa || ga almashdi. ball > 50 ning teskarisi — ball <= 50 (teng holat ham kiradi).
10. Ko'p uchraydigan xatolar
10.1 Oraliqni 60 <= ball <= 100 deb yozish
const ball = 150;
console.log(60 <= ball <= 100); // true150 ball 100 dan katta, lekin natija true! Bu tuzoqni taqqoslash darsida ko'rgan edik. JavaScript chapdan o'ngga bajaradi: avval 60 <= 150 — true. Keyin true <= 100. true songa aylanadi — 1. 1 <= 100 — true.
To'g'risi — && bilan ikki alohida taqqoslash:
const ball = 150;
console.log(ball >= 60 && ball <= 100); // false10.2 Bitta & yoki | yozish
console.log(true & true); // 1
console.log(true | false); // 1Xato chiqmadi, lekin natija true emas, 1. Bitta & va | — butunlay boshqa, bitli operatorlar (bitwise). Ular sonlarning ikkilik ko'rinishi ustida ishlaydi va qisqa tutashuv qilmaydi. Ularni bitwise darsida o'rganamiz. Mantiqiy "va"/"yoki" uchun doim ikkita belgi: &&, ||.
10.3 ! ning qayerga ta'sir qilishini unutish
Biz "yosh 18 dan kichikmi?" demoqchimiz, ya'ni "yosh 18 yoki undan katta emasmi?":
const yosh = 10;
console.log(!yosh >= 18); // false
console.log(!(yosh >= 18)); // true10 yoshli bola 18 dan kichik — javob true bo'lishi kerak edi. Birinchi qatorda esa ! faqat yosh ga ta'sir qildi: !10 — false. Keyin false >= 18 — false. Bu ifoda istalgan yoshda false beradi — u hech narsani tekshirmayapti. To'g'risi — ikkinchi qator: ! butun taqqoslashga qavs orqali qo'llanadi.
10.4 and, or so'zlarini yozish
Boshqa tillarda (masalan, Python) "va" uchun and so'zi ishlatiladi. JavaScript'da bunday so'z yo'q:
const pinTogri = true;
const pulBor = false;
const ruxsat = pinTogri and pulBor;SyntaxError: Unexpected identifier 'and'Tarjimasi: "kutilmagan nom: and". JavaScript and ni o'zgaruvchi nomi deb o'yladi. Ikki nom orasida operator bo'lishi kerak edi. To'g'risi: pinTogri && pulBor.
10.5 || bilan 0 ni yo'qotish
Buni shakarli choy misolida ko'rdik: 0 || 2 — 2. Agar 0 yoki "" haqiqiy qiymat bo'lishi mumkin bo'lsa, || bilan default bermang. ?? operatorini ishlating.
11. Mashqlar
1-mashq (oson): Natijani toping
Ishga tushirmasdan har bir qator natijasini yozing, keyin tekshiring.
console.log(true && false);
console.log(false || true);
console.log(!false);
console.log("olma" || "nok");
console.log("" || "nok");
console.log("olma" && "nok");Yechim
console.log(true && false); // false
console.log(false || true); // true
console.log(!false); // true
console.log("olma" || "nok"); // olma
console.log("" || "nok"); // nok
console.log("olma" && "nok"); // nokOxirgi uchtasida || birinchi truthy qiymatni qaytaradi, && esa (falsy topilmasa) oxirgisini. Natija — satrning o'zi, true emas.
2-mashq (o'rta): Bot salomlashuvi
Telegram bot foydalanuvchiga ism bilan murojaat qiladi. Ism bo'lmasa — username'dan, u ham bo'lmasa — "do'st" so'zidan foydalanadi.
const ism = "";
const username = "jasur_uz";murojaat o'zgaruvchisini bitta || zanjiri bilan yarating. console.log("Salom,", murojaat) bilan chiqaring. So'ng username ni undefined ga o'zgartirib, yana sinab ko'ring.
Ishora: || birinchi truthy qiymatni qaytaradi, bo'sh satr esa falsy.
Yechim
const ism = "";
const username = "jasur_uz";
const murojaat = ism || username || "do'st";
console.log("Salom,", murojaat); // Salom, jasur_uzusername ni undefined qilsangiz:
const ism = "";
const username = undefined;
const murojaat = ism || username || "do'st";
console.log("Salom,", murojaat); // Salom, do'stZanjirda chapdan o'ngga birinchi to'ldirilgan qiymat olinadi. Hammasi bo'sh bo'lsa — oxirgisi.
3-mashq (qiyin): Metro turniketi
Turniket yo'lovchini o'tkazadi, agar uning kartasi yoki QR-kodi bo'lsa va u bloklanmagan bo'lsa.
const kartaBor = false;
const qrBor = true;
const bloklangan = false;otaOladio'zgaruvchisini yarating. Qavslarni to'g'ri qo'ying —||&&dan keyin bajarilishini unutmang.otaOlmaydio'zgaruvchisini yarating —otaOladining teskarisi. Lekin!(...)ni tashqarida qoldirmang: De Morgan qonuni bilan!ni ichkariga kiriting.- Ikkalasini chiqaring. Ular doim bir-biriga teskari bo'lishi kerak.
Yechim
const kartaBor = false;
const qrBor = true;
const bloklangan = false;
const otaOladi = (kartaBor || qrBor) && !bloklangan;
const otaOlmaydi = (!kartaBor && !qrBor) || bloklangan;
console.log(otaOladi); // true
console.log(otaOlmaydi); // falseQanday chiqdi:
otaOladida qavs shart: usizkartaBor || qrBor && !bloklanganbo'lib,&&birinchi bajarilardi.!((kartaBor || qrBor) && !bloklangan)ga De Morgan qo'llaymiz:&&→||, har bir qism teskari.!(kartaBor || qrBor) || !!bloklangan.!(kartaBor || qrBor)ga yana De Morgan:!kartaBor && !qrBor.!!bloklanganesa shunchakibloklangan.
bloklangan ni true qilib sinab ko'ring: natijalar false va true ga almashadi.
12. Real ishda
- Sozlamalarda default qiymat. Node.js serverlarida
const port = process.env.PORT || 3000;qatori juda ko'p uchraydi: sozlamada port berilmagan bo'lsa, 3000 olinadi.process.env— server sozlamalari, uni Node.js qismida o'rganamiz. - React'da shartli ko'rsatish. React (sayt yasash uchun mashhur vosita) kodida
yangiXabar && <Belgi />kabi yozuvni tez-tez ko'rasiz: xabar bo'lsa, belgi chiqadi. Bu aynan qisqa tutashuv. React'ni kursda alohida o'rganamiz. - Eski koddagi tekshiruvlar.
foydalanuvchi && foydalanuvchi.ism— "foydalanuvchi bor bo'lsa, ismini ol". Keyingi darsdagi?.operatori buni qisqaroq qiladi. - Intervyu. "
&&va||nima qaytaradi?", "0 || 5natijasi nima?" — tez-tez beriladigan savollar. Endi siz javob berasiz: operandlardan birining o'zi,5.
Xulosa
&&— ikkala tomon rost bo'lsa rost;||— bittasi rost bo'lsa yetarli;!— teskarisi.!doim boolean qaytaradi.&&va||esa tomonlardan birining o'zini qaytaradi.||birinchi truthy qiymatni,&&birinchi falsy qiymatni qidiradi. Topilmasa — oxirgisi qaytadi.- Qisqa tutashuv: javob ma'lum bo'lsa, o'ng tomon umuman bajarilmaydi.
a || "zaxira"— default qiymat naqshi, lekin0va""ni ham "yo'q" deb hisoblaydi.- Ustuvorlik:
!, keyin&&, keyin||. De Morgan:!(a && b)=!a || !b.
Keyingi dars: ??, ?. va mantiqiy tayinlash — 0 ni yo'qotmaydigan zaxira operatori va "yo'q" qiymatdan xavfsiz o'tishni o'rganamiz.
Izohlar (0)
Izoh yozish uchun kiring.
- Hozircha izoh yo'q. Birinchi bo'ling!