заявление о «переключении»
switchЗаявления могут заменить несколькоifсудить.
switchЗаявления обеспечивают более описательный способ для случая многоветвевого выбора.
грамматика
switchутверждение имеет хотя бы одинcaseблок кода и необязательныйdefaultкодовый блок.
так:
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
- Сравнивать
xзначение с первымcase(то есть,value1) строго равны, то сравните вторыеcase(value2) и так далее. - Если равны,
switchоператор выполняется соответственноcaseблоки кода ниже до ближайшегоbreakзаявление (или доswitchконец заявления). - Если нет подходящего случая, выполните
defaultкодовый блок (еслиdefaultсуществует).
Например
switchпример (выполнитьcase 4часть):
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
break;
case 4:
alert( 'Exactly!' );
break;
case 5:
alert( 'Too large' );
break;
default:
alert( "I don't know such values" );
}
здесьswitchот первойcaseфилиал начнетсяaзначение сcaseПосле сравнения значений первыйcaseЗначение после3Матч не удался.
затем сравните4. совпадает, поэтому изcase 4Начать выполнение до ближайшегоbreak.
если нетbreak, программа продолжится до следующей без каких-либо проверокcase.
безbreakпример:
let a = 2 + 2;
switch (a) {
case 3:
alert( 'Too small' );
case 4:
alert( 'Exactly!' );
case 5:
alert( 'Too big' );
default:
alert( "I don't know such values" );
}
В приведенном выше примере мы увидим три последовательных выполненияalert:
alert( 'Exactly!' );
alert( 'Too big' );
alert( "I don't know such values" );
Любое выражение может статьswitch/caseпараметры
switchа такжеcaseОба допускают произвольные выражения.
Например:
let a = "1";
let b = 0;
switch (+a) {
case b + 1:
alert("this runs, because +a is 1, exactly equals b+1");
break;
default:
alert("this doesn't run");
}
здесь+aвернуть1, это значение совпадает сcaseсерединаb + 1Сравните и выполните соответствующий код.
группировка "кейс"
Несколько, которые используют один и тот же фрагмент кодаcaseВетви можно сгруппировать в группы:
Например, если мы хотимcase 3а такжеcase 5Выполните тот же код:
let a = 2 + 2;
switch (a) {
case 4:
alert('Right!');
break;
case 3: // (*) 下面这两个 case 被分在一组
case 5:
alert('Wrong!');
alert("Why don't you take a math class?");
break;
default:
alert('The result is strange. Really.');
}
Сейчас3а также5Все отображают ту же информацию.
switch/caseЕсть возможность "группировать" по регистру, на самом деле оператор switch этого не делает.breakпобочные эффекты. потому что безbreak,case 3будет от(*)строка выполняется доcase 5.
тип имеет значение
Подчеркнем, что равенство здесь является строгим равенством. Сравниваемые значения должны быть одного типа для совпадения.
Например, давайте посмотрим на следующий код:
let arg = prompt("Enter a value?")
switch (arg) {
case '0':
case '1':
alert( 'One or zero' );
break;
case '2':
alert( 'Two' );
break;
case 3:
alert( 'Never executes!' );
break;
default:
alert( 'An unknown value' )
}
- существует
promptдиалоговый ввод0,1,Первыйalertвыскакивать. - войти
2,второйalertвыскакивать. - но введите
3,потому чтоpromptРезультат имеет тип string"3", не строго равно===для числовых типов3,такcase 3не будет выполняться! следовательноcase 3часть является частью недопустимого кода. так будет выполнятьdefaultветвь.
домашние вопросы
Сначала задайте вопрос, а потом смотрите ответ.
1. Переманите структуру «переключатель» как «если» структура
Важность: ⭐️⭐️⭐️⭐️⭐️
Напишите код для следующей конструкции «переключатель» какif..elseструктура:
switch (browser) {
case 'Edge':
alert( "You've got the Edge!" );
break;
case 'Chrome':
case 'Firefox':
case 'Safari':
case 'Opera':
alert( 'Okay we support these browsers too' );
break;
default:
alert( 'We hope that this page looks ok!' );
}
2. Перепишите конструкцию «если» в конструкцию «переключатель».
Важность: ⭐️⭐️⭐️⭐
использоватьswitchПерепишите следующий код:
let a = +prompt('a?', '');
if (a == 0) {
alert( 0 );
}
if (a == 1) {
alert( 1 );
}
if (a == 2 || a == 3) {
alert( '2,3' );
}
Отвечать:
Ответ на фоне публичного аккаунта WeChat «Технический разговор»1-2-13Получите ответ на этот вопрос.
Учебники по современному JavaScript: учебные пособия по современному JavaScript с открытым исходным кодом, от начального до продвинутого.Рекомендовано официальной документацией React, учебным пособием по JavaScript вместе с MDN..
Читайте онлайн бесплатно:zh.javascript.info
Отсканируйте приведенный ниже QR-код, подпишитесь на общедоступную учетную запись WeChat «Technology Talk» и подпишитесь на более интересный контент.