Switch
"switch"
switch конструкциясы бир эле учурда бир нече ifs алмаштырат.
Бул сөз айкашын бир эле учурда бир нече вариантка салыштыруунун визуалдык жолу.
Синтаксис
Switch операторунда бир же бир нече регистр блоктору жана кошумча демейки блок бар.
Бул төмөнкүдөй көрүнөт:
@A@switch(x) {
case 'value1': // if (x === 'value1')
...
[тыныгуу]
case 'value2': // if (x === 'value2')
...
[тыныгуу]
демейки:
...
[тыныгуу]
}@A@
x өзгөрмөсү 1 маанинин биринчи маанисине, андан кийин экинчи мааниге2 жана башкаларга катуу барабар болушу үчүн текшерилет.
Эгерде дал келүү белгиленсе, которуштуруу иш боюнча тиешелүү директивадан жана андан ары жакынкы тыныгууга (же которуштуруунун аягына чейин) аткарыла баштайт.
Эгерде эч кандай учур дал келбесе, демейки вариант аткарылат (эгерде бар болсо).
Жумуштун мисалы
Которуштурууну колдонуунун мисалы (иштеген код белгиленген):
a = 2 + 2 болсун;
@A@Switch (а) {
case 3:
alert('Жетишпейт');
break;
case 4:
alert( 'Негизинен!' );
break;
case 5:
alert('Издөө');
break;
default:
alert( "Мындай маанилер жок" );
}@A@
Бул жерде, switch оператору aны иштин бардык варианттары менен ырааттуу түрдө салыштырат.
Адегенде 3, андан кийин - дал келүү жок болгондуктан - 4. Дал келүү табылды, бул параметр саптан эскертүүдөн( 'Точокко!' ) жана андан ары эң жакынкы тыныгууга чейин аткарылат, ал аткарууну токтотот.
Эгерде тыныгуу жок болсо, анда аткаруу кийинки ишке өтөт, ал эми калган текшерүүлөр эске алынбайт.Тыныгуусуз мисал:
a = 2 + 2 болсун;
@A@switch(а) {
case 3:
alert('Жетишпейт');
case 4:
alert( 'Негизинен!' );
case 5:
alert('Издөө');
default:
alert( "Мындай маанилер жок" );
}@A@
Жогорудагы мисалда үч эскертүү ирети менен аткарылат:
@A@alert( 'Негизинен!' );
alert('Издөө');
alert( "Мындай маанилер жок" );@A@
Ар кандай туюнтма которуштуруу/кеп үчүн аргумент болушу мүмкүн
Которуу да, регистр да аргумент катары ар кандай туюнтмага уруксат берет.
Мисалы:
@A@let a = "1";
b = 0 болсун;
которуштуруу (+a) {
b+1 учуру:
alert("Чурка, анткени +a 1 болот, бул так b+1ге барабар");
break;
default:
alert("Бул иштебейт");
}@A@
Бул мисалда +a туюнтмасы 1ге бааланат, бул учурда b + 1 туюнтмасы менен бирдей, ошондуктан бул блоктогу код аткарылат.
Топтоо "иш"
Бир эле кодду колдонгон бир нече кейс варианттарын топтоштурса болот.
Мисалы, 3 жана 5-жагдайлар үчүн бир эле кодду иштетели, аларды чогуу топтойлу:
a = 3 болсун;
@A@switch (а) {
case4:
alert('Туура!');
break;@A@
3-жагдай: // (*) эки учурду тең топто
иш 5:
@A@ alert('Туура эмес!');
alert("Сиз математика сабагына катышкыңыз келеби?");
үзүү;
демейки:
alert('Натыйжа кызыктай көрүнөт. Чынын айтсам.');
}@A@
Эми 3 жана 5 варианттары бирдей билдирүүнү чыгарат.
Иштерди топтоо жөндөмү - которгуч/кап тыныгуусуз иштөөнүн терс таасири. Бул жерде 3-кабардын аткарылышы (*) сызыгынан башталып, 5-кабарда уланат, анткени үзгүлтүк жок.
Тип маанилүү
Белгилей кетчү нерсе, теңдик сыноо дайыма катуу. Теңдик сакталышы үчүн баалуулуктар бир типте болушу керек.Мисалы, төмөнкү кодду карап көрөлү:
@A@let arg = prompt("Сан киргизиңизби?");
switch (arg) {
'0' учуру:
иши 1':
alert('Бир же нөл');
үзүү;
'2' учуру:
alert('Эки' );
үзүү;
иш 3:
alert( 'Эч качан аткарбагыла!' );
үзүү;
демейки:
alert('Белгисиз маани');
}@A@
"0" жана "1" үчүн биринчи эскертүү аткарылат.
"2" үчүн, экинчи эскертүү.
Бирок 3 үчүн, буйруктун аткарылышынын натыйжасы "3" сабы болот, ал 3 саны менен катуу === теңчиликке дал келбейт. Ошентип, бизде 3-жагдайда "өлүк код" бар! Демейки опция аткарылат.
Tasks
"которуштурууга" окшош "эгер" деп жазыңыз
маанилүүлүгү: 5
Төмөнкү которгучка ылайыктуу if..else жазыңыз:
которуштуруу (браузер) {
case 'Edge':
alert( "Сизде Edge бар!" );
үзүү;
"Chrome" иши:
"Firefox" иши:
"Safari" иши:
"Опера" окуясы:
alert( 'Макул, бул браузерлерди да колдойбуз' );
үзүү;
демейки:
alert( 'Бул барак жакшы көрүнөт деп үмүттөнөбүз!' );
}
чечим
"Которуу" үчүн "эгерде" шарттарын кайра жазыңыз
маанилүүлүгү: 4
Бир которуштуруу билдирүүсүн колдонуп кодду кайра жазыңыз:
const number = +prompt('0 жана 3 ортосундагы санды киргизиңиз', '');
if (сан === 0) {
alert('Сиз 0 санын киргиздиңиз');
}
эгерде (сан === 1) {
alert('Сиз 1 санын киргиздиңиз');
}
if (сан === 2 || саны === 3) {
alert('Сиз 2 санын киргиздиңиз, балким 3');
}