Кээде шарттарга жараша ар кандай аракеттерди жасоого туура келет.
Бул үчүн биз операторду if
жана шарттуу операторду колдонсок болот ?
, ал "суроо белгиси" оператору деп да аталат.
"if" билдирүүсү
Инструкция if(...)
шартты кашаанын ичинде баалайт жана эгер натыйжа болсо true
, код блогун аткарат.
Мисалы:
@A@let year = +prompt('ECMASCipt-2015 канчнчы жылы жарыяланган?');
if (year == 2015)
alert ("Туура!")@A@
Жогорудагы мисалда шарт жөнөкөй теңдик тести ( year == 2015
), бирок ал алда канча татаал болушу мүмкүн.
Эгерде биз бир нече инструкцияны аткаргыбыз келсе, анда код блогун тармал кашаага алышыбыз керек:
@A@if (year == 2015) {
alert( "туура !" );
alert( "Акылдуусуз!" );
}
@A@
Бир гана буйрук аткарылып жатса дагы, {}
операторду колдонгон сайын тармал кашааларды колдонууну сунуштайбыз . if
Бул коддун окулушун жакшыртат.
Логикалык конверсия
Инструкция if (…)
кашаадагы туюнтманы баалайт жана натыйжаны логикалык түргө которот.
Типти конверсиялоо бөлүмүндөгү типти өзгөртүү эрежелерин эстеп көрөлү :
- Сан
0
, бош сап""
,null
жанаundefined
болупNaN
калатfalse
. Ушундан улам алар "жалган" баалуулуктар деп аталат. - Калган баалуулуктар болуп калат
true
, ошондуктан алар "чындык" ("чындык") деп аталат.
Ошентип, бул шартта код эч качан аткарылбайт:
if (0) { // 0 is falsy
...
}
... жана муну менен, ал ар дайым аткарылат:
if (1) { // 1 is truthy
...
}
Биз ошондой эле өзгөрмөгө алдын ала эсептелген логикалык маанини бере алабыз if
, мисалы:
@A@ let condition = (year == 2015); // trueга айланабы же false
if (condition) {
...
} @A@
"Башка" бөгөт коюу
Билдирүүдө if
кошумча "else" блогу болушу мүмкүн ("башкача"). Шарт туура эмес болгондо аткарылат.
Мисалы:
Бир нече шарттар: "башка болсо"
Кээде шарттын бир нече варианттарын текшерүү керек. Бул үчүн блок колдонулат else if
.
Мисалы:
@A@let year = prompt('ECMAScript-2015 спецификациясы качан жарыяланган?', ''); if (year < 2015) { alert( 'бир аз эрте...' ); } else if (year > 2015) { alert( 'бир аз кечиррек' ); } else { alert( 'туура!' ); }
@A@
Жогорудагы коддо JavaScript адегенде year < 2015
. Эгер ал жалган болсо, ал кийинки шартка өтөт year > 2015
. Эгер ал да жалган болсо, анда акыркысы иштейт alert
.
Көбүрөөк блоктор else if
болушу мүмкүн . Блоктун болушу else
милдеттүү эмес.
Шарттуу оператор "?"
Кээде шартка жараша өзгөрмө аныктообуз керек.
Мисалы:
@A@let accessAllowed; let age = prompt('канча жаштасыз?', ''); if (age > 18) { accessAllowed = true; } else { accessAllowed = false; } alert(accessAllowed);
@A@
"Шарттуу" деп аталган оператор "суроо белгиси" бизге муну кыскараак жана жөнөкөй жол менен жасоого мүмкүндүк берет.
Оператор суроо белгиси менен көрсөтүлөт ?
. Ал ошондой эле "үчтүк" деп аталат, анткени бул оператордун, анын түрүндөгү жалгыз, үч аргументи бар.
Синтаксис:
@A@let result = условие ? значение1 : значение2;@A@
Алгач баа берет условие
: эгер чын болсо, анда кайтарат значение1
, болбосо кайтарат значение2
.
Мисалы:
@A@let accessAllowed = (age > 18) ? true : false;
@A@
Техникалык жактан алганда, биз age > 18
. Суроо белгиси операторунун артыкчылыктуулугу төмөн, ошондуктан ал салыштыруудан кийин аткарылат >
.
Бул мисал мурункудай эле кылат:
@A@// салыштыруу оператору "age > 18"
// (скобкага салуунун зарылдыгы жок)
let accessAllowed = age > 18 ? true : false;
@A@
Бирок кашаалар кодду окууну жеңилдетет, андыктан аларды колдонууну сунуштайбыз.
Жогорудагы мисалда сиз суроо белгисинин операторун колдонуудан качсаңыз ?
болот салыштыруунун өзү эле кайтып келет true/false
:
@A@// то же самое
let accessAllowed = age > 18;@A@
Бир нече '?' операторлору
Суроо белгиси операторлорунун ырааттуулугу ?
бирден ашык шартка көз каранды болгон маанини кайтарууга мүмкүндүк берет.
Мисалы:
@A@let age = prompt('Возраст?', 18); let message = (age < 3) ? 'салам кичи дос !' : (age < 18) ? 'салам!' : (age < 100) ? 'саламатсызбы!' : 'Кандай башкача жаш !'; alert( message )
@A@
Башында эмне болуп жатканын түшүнүү кыйын болушу мүмкүн. Бирок жакшыраак текшерүүдөн кийин, бул кадимки сериялык текшерүү экенин көрөбүз:
- Биринчи суроо белгиси текшерет
age < 3
. - Эгер чын болсо, кайтарат
'Здравствуй, малыш!'
. Болбосо, ал “:” кош чекиттен кийинки туюнтманы текшерет, баалайтage < 18
. - Эгер чын болсо, ал кайтып келет
'Привет!'
. Болбосо, ал кийинки кош чекиттен кийинки туюнтманы текшерет ":", ге баа беретage < 100
. - Эгер чын болсо, ал кайтып келет
'Здравствуйте!'
. Болбосо, акыркы кош чекиттен кийинки туюнтманы кайтарат -'Какой необычный возраст!'
.
Бул колдонулганда кандай көрүнөт if..else
:
@A@if (age < 3) {
message = 'салам кичи дос!';
} else if (age < 18) {
message = 'салам!';
} else if (age < 100) {
message = 'Саламатсызбы!';
} else {
message = 'Кандай башкача жаш!';
}@A@
салттуу эмес колдонуу "?"
Кээде "суроо белгиси" оператору ?
алмаштыруу катары колдонулат if
:
@A@let company = prompt(' JavaScript кайсы компания тузгон?', ''); (company == 'Netscape') ? alert('Верно!') : alert('Туурамес.');
@A@
Шартка жараша company == 'Netscape'
биринчи же экинчи бөлүгү аткарылат ?
.
Бул жерде биз натыйжаны өзгөрмөгө дайындаган жокпуз. Анын ордуна, шартка жараша ар кандай кодду аткарабыз.
Суроо белгисинин операторун мындай колдонуу сунушталбайт.
Бул белги эквиваленттүү инструкциядан кыскараак болсо да if
, ал азыраак окулат.
Бул жерде, салыштыруу үчүн, ошол эле кодду колдонгон if
:
@A@let company = prompt('JavaScript кайсы компания тузгон', ''); if (company == 'Netscape') { alert('туура!'); } else { alert('туура эмес.'); }
@A@
Окуу учурунда көздөр кодду вертикалдуу сканерлейт. Бир нече сапты камтыган код блокторун окуу узун, горизонталдуу нускамаларга караганда бир топ жеңил.
"Суроо белгиси" операторунун мааниси ?
шартка жараша тигил же бул маанини кайтарып берүү. Сураныч, аны ошол үчүн колдонуңуз. Ар кандай код жолдорун аткаруу керек болгондо, колдонуңуз if
.
Tasks
конструкциясын колдонуп if..else
, "JavaScript'тин "расмий" аталышы эмне?" деп сураган кодду жазыңыз.
Эгер колдонуучу "ECMAScript" киргизсе, анда төмөнкүнү көрсөт: "Туура!" Болбосо, көрсөтүү: "Билбейсиңби? ECMAScript!"
Конструкцияны колдонуп if..else
, санды кабыл алган кодду жазыңыз prompt
жана андан кийин төмөнкүгө чыгарыңыз alert
:
1
мааниси нөлдөн жогору болсо,-1
мааниси нөлдөн аз болсо,0
мааниси нөл болсо.
Колдонуучу сандарды гана киргизет деп күтүлүүдө.
if
Шарттуу операторду колдонуп конструкцияны кайра жазыңыз '?'
:
let result;
if (a + b < 4) {
result = 'Мало';
} else {
result = 'Много';
}
if..else
Бир нече операторлорду колдонуп кайра жазыңыз '?'
.
Окуу үчүн кодду бир нече саптарга бөлүү сунушталат.