Baâzan, biz har xil sharoitlarda har xil harakatlarni bajarishimiz kerak.
Buning uchun if ifodasidan va âsavol belgisiâ operatori deb yuritiladigan uchlik operatoridan soddalik uchun foydalanamiz ?.
âIfâ ifodasi
If ifodasi shartni baholaydi va agar natijaning natijasi true boâlsa, kod blokini bajaradi.
Masalan:
let year = prompt('ECMAScript-2015 spetsifikatsiyasi qaysi yilda nashr etilgan??', '');
if (year == 2015) alert( 'Siz haqsiz!' );
Yuqoridagi misolda shart oddiy tenglikni tekshirish (yil == 2015), ammo u ancha murakkab boâlishi mumkin.
Agar biz bir nechta ifodalarni bajarishni istasak, kod blokimizni jingalak qavs ichiga oârashimiz kerak:
if (year == 2015) {
alert("Bu to'g'ri!");
alert("Siz juda aqllisiz!");
}
Kod blokingizni jingalak qoâshtirnoq bilan oârashni tavsiya etamiz {} har safar if ifodadan foydalansangizda, bajarish uchun bitta ifoda boâlsa ham. Bunday qilish,kodning oâqilishini yaxshilaydi.
Mantiqiy malumot turiga konvertatsiya
If(...) ifodasi uning qavsidagi ifodani baholaydi va natijani mantiqiy holatga oâtkazadi.
"type-convertions" maqolasi topilmadi bobidagi konvertatsiya qoidalarini eslaylik:
0raqami, boâsh satr"",null,undefinedvaNaNbarchasifalseboâladi. Shu sababli ularni âsoxtaâ qiymatlar deb atashadi.- Boshqa qiymatlar
trueboâladi, shuning uchun ular âaniqâ deb nomlanadi.
Shunday qilib, ushbu shartdagi kod hech qachon bajarilmaydi:
if (0) { // 0 bu soxta
...
}
â¦va bu shart ichida â bu har doim toâgâri boâladi:
if (1) { // 1 bu to'g'ri
...
}
Bundan tashqari, oldindan baholangan mantiqiy qiymatni if ga kiritishingiz mumkin, masalan:
let cond = (year == 2015); // tenglik rost yoki yolg'on qiymatini baholaydi
if (cond) {
...
}
âElseâ ifodasi
If ifodasi ixtiyoriy else blokini oâz ichiga olishi mumkin. U shart notoâgâri boâlganida amalga oshiriladi.
Masalan:
let year = prompt(
"ECMAScript-2015 spetsifikatsiyasi qaysi yilda nashr etilgan?",
""
);
if (year == 2015) {
alert("Siz buni to'g'ri taxmin qildingiz!");
} else {
alert("Qanday qilib shunday noto'g'ri bo'lishi mumkin?"); // 2015 yildan tashqari har qanday qiymat
}
Bir nechta shartlar: âelse ifâ
Sometimes, weâd like to test several variants of a condition. The else if clause lets us do that.
Baâzan, biz shartning bir nechta variantlarini sinab koârmoqchi bolamiz. Else if ifodasi bunga imkon beradi.
Masalan:
let year = prompt(
"ECMAScript-2015 spetsifikatsiyasi qaysi yilda nashr etilgan?",
""
);
if (year < 2015) {
alert("Juda erta...");
} else if (year > 2015) {
alert("Juda kech");
} else {
alert("Aynan!");
}
Yuqoridagi kodda JavaScript avval year < 2015 ni tekshiradi. Agar bu notoâgâri boâlsa, u keyingi year > 2015 shartiga oâtadi. Agar bu ham notoâgâri boâlsa, u oxirgi alert ni koârsatadi.
Koâproq else if bloklari boâlishi mumkin. Oxirgi else ixtiyoriy.
<<<<<<< HEAD
Uchlik operator â?â
=======
Conditional operator â?â
fb4fc33a2234445808100ddc9f5e4dcec8b3d24c
Baâzan, biz shartga qarab oâzgaruvchani tayinlashimiz kerak.
Masalan:
let accessAllowed;
let age = prompt('Yoshingiz nechida?', '');
if (age > 18) {
accessAllowed = true;
} else {
accessAllowed = false;
}
alert(accessAllowed);
<<<<<<< HEAD âUchlikâ yoki âsavol belgisiâ deb nomlangan operator bizga buni qisqa va sodda qilib bajarishga imkon beradi.
Operator ? savol belgisi bilan ifodalanadi. âUchlikâ rasmiy atamasi operatorda uchta operand borligini anglatadi. Bu aslida JavaScript-da juda koâp operandli bitta va yagona operator.
The so-called âconditionalâ or âquestion markâ operator lets us do that in a shorter and simpler way.
The operator is represented by a question mark ?. Sometimes itâs called âternaryâ, because the operator has three operands. It is actually the one and only operator in JavaScript which has that many.
fb4fc33a2234445808100ddc9f5e4dcec8b3d24c
Sintaksis:
let result = shart ? qiymat1 : qiymat2;
Shart baholanadi: agar u toâgâri boâlsa, u holda qiymat1 qaytariladi, aks holda â qiymat2.
Masalan:
let accessAllowed = age > 18 ? true : false;
<<<<<<< HEAD
Texnik jihatdan age > 18 atrofidagi qavslarni tashlab qoâyishimiz mumkin. Savol belgisi operatori past ustunlikka ega, shuning uchun u > taqqoslashidan soâng amalga oshiriladi.
Technically, we can omit the parentheses around age > 18. The question mark operator has a low precedence, so it executes after the comparison >.
fb4fc33a2234445808100ddc9f5e4dcec8b3d24c
Ushbu misol avvalgisiga oâxshash narsani bajaradi:
// taqqoslash operatori "age > 18" baribir birinchi bo'lib bajariladi
// (uni qavs ichiga oârab olishning hojati yoâq)
let accessAllowed = age > 18 ? true : false;
Ammo qavslar kodning oâqilishini yanada oson qiladi, shuning uchun ulardan foydalanishni tavsiya etamiz.
Yuqoridagi misolda siz savol belgisi operatorini foydalanishdan saqlanishingiz mumkin, chunki taqqoslash oâzi true/false ni qaytaradi:
// xuddi shu
let accessAllowed = age > 18;
Bir nechta â?â
Savol belgi operatorlari ketma-ketligi ? bir nechta shartlarga bogâliq boâlgan qiymatni qaytarishi mumkin.
Masalan:
let age = prompt("age?", 18);
let message =
age < 3
? "Salom bolakay!"
: age < 18
? "Salom!"
: age < 100
? "Assalomu aleykum!"
: "Qanday g'ayrioddiy yosh!";
alert(message);
Avvaliga nima boâlayotganini tushunish qiyin boâlishi mumkin. Ammo yaqindan koârib chiqqach, bu oddiy testlar ketma-ketligi ekanligini koârishimiz mumkin:
- Birinchi savol belgisi
age < 3ni tekshiradi. - Agar rost boâlsa â u qaytadi
'Salom bolakay!'. Aks holda, u yoâgâon ichakdan ââ:ââ keyingi ifodaga davom etadi,age < 18ni tekshirishadi. - Agar shu rost boâlsa â u qaytadi
'Salom!'. Aks holda, u yoâgâon ichakdan ââ:ââ keyingi ifodaga davom etadi,age < 100ni tekshirishadi. - Agar shu rost boâlsa â u qaytadi
'Assalomu aleykum!'. Aks holda, u yoâgâon ichakdan ââ:ââ ohirgi ifodaga davom etadi,Qanday g'ayrioddiy yosh!ni qaytaradi.
Bu if..else yordamida qanday koârinishga ega:
if (age < 3) {
message = "Salom bolakay!";
} else if (age < 18) {
message = "Salom!";
} else if (age < 100) {
message = "Assalomu aleykum!";
} else {
message = "Qanday g'ayrioddiy yosh!";
}
â?â dan noanâanaviy foydalanish
Baâzan ? savol belgisi if oârnini bosuvchi sifatida ishlatiladi:
let company = prompt('JavaScript-ni qaysi kompaniya yaratgan?', '');
(company == 'Netscape') ?
alert("To'g'ri!") : alert("Noto'g'ri!");
Company == 'Netscape' shartiga qarab, ? dan keyin birinchi yoki ikkinchi ifoda bajariladi va ogohlantirish koârsatiladi.
Biz bu yerda oâzgaruvchanga natija bermaymiz. Buning oârniga, biz shartga qarab turli xil kodlarni bajaramiz.
<<<<<<< HEAD Savol belgisi operatoridan shu tarzda foydalanishni tavsiya etmaymiz.
Itâs not recommended to use the question mark operator in this way.
fb4fc33a2234445808100ddc9f5e4dcec8b3d24c
Yozuv baâzi dasturchilarga yoqadigan if ekvivalentidan qisqa. Ammo uning oâqilishi qiyin.
Taqqoslash uchun if dan foydalanilgan usha kod:
let company = prompt('JavaScript-ni qaysi kompaniya yaratgan?', '');
if (company == 'Netscape') {
alert("To'g'ri!");
} else {
alert("Noto'g'ri!");
}
Bizning koâzlarimiz kodni vertikal ravishda skanerlaydi. Bir nechta satrlarni qamrab oladigan kod bloklarini uzoq, lekin gorizontal koârsatmalar toâplamidan koâra tushunishga osonroq boâlishi mumkin.
? Savol belgisi operatorining maqsadi uning shartiga qarab u yoki bu qiymatni qaytarishdir. Iltimos, faqat shu maqsad uchun foydalaning. Kodning turli tarmoqlarini bajarish kerak boâlganda if dan foydalaning.
Izohlar
<code>yorlig'ini ishlating, bir nechta satrlar uchun - ularni<pre>yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepenâ¦)