Как в операторе if проверить сразу несколько условий
Перейти к содержимому

Как в операторе if проверить сразу несколько условий

  • автор:

Условное ветвление: if, ‘?’

Иногда нам нужно выполнить различные действия в зависимости от условий.

Для этого мы можем использовать инструкцию if и условный оператор ? , который также называют оператором «вопросительный знак».

Инструкция «if»

Инструкция if(. ) вычисляет условие в скобках и, если результат true , то выполняет блок кода.

let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', ''); if (year == 2015) alert( 'Вы правы!' );

В примере выше, условие – это простая проверка на равенство ( year == 2015 ), но оно может быть и гораздо более сложным.

Если мы хотим выполнить более одной инструкции, то нужно заключить блок кода в фигурные скобки:

if (year == 2015)

Мы рекомендуем использовать фигурные скобки <> всегда, когда вы используете инструкцию if , даже если выполняется только одна команда. Это улучшает читаемость кода.

Преобразование к логическому типу

Инструкция if (…) вычисляет выражение в скобках и преобразует результат к логическому типу.

Давайте вспомним правила преобразования типов из главы Преобразование типов:

  • Число 0 , пустая строка «» , null , undefined и NaN становятся false . Из-за этого их называют «ложными» («falsy») значениями.
  • Остальные значения становятся true , поэтому их называют «правдивыми» («truthy»).

Таким образом, код при таком условии никогда не выполнится:

if (0) < // 0 is falsy . >

…а при таком – выполнится всегда:

if (1) < // 1 is truthy . >

Мы также можем передать заранее вычисленное в переменной логическое значение в if , например так:

let condition = (year == 2015); // преобразуется к true или false if (condition)

Блок «else»

Инструкция if может содержать необязательный блок «else» («иначе»). Он выполняется, когда условие ложно.

let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', ''); if (year == 2015) < alert( 'Да вы знаток!' ); >else < alert( 'А вот и неправильно!' ); // любое значение, кроме 2015 >

Несколько условий: «else if»

Иногда нужно проверить несколько вариантов условия. Для этого используется блок else if .

let year = prompt('В каком году была опубликована спецификация ECMAScript-2015?', ''); if (year < 2015) < alert( 'Это слишком рано. ' ); >else if (year > 2015) < alert( 'Это поздновато' ); >else

В приведённом выше коде JavaScript сначала проверит year < 2015 . Если это неверно, он переходит к следующему условию year >2015 . Если оно тоже ложно, тогда сработает последний alert .

Блоков else if может быть и больше. Присутствие блока else не является обязательным.

Условный оператор „?“

Иногда нам нужно определить переменную в зависимости от условия.

let accessAllowed; let age = prompt('Сколько вам лет?', ''); if (age > 18) < accessAllowed = true; >else < accessAllowed = false; >alert(accessAllowed);

Так называемый «условный» оператор «вопросительный знак» позволяет нам сделать это более коротким и простым способом.

Оператор представлен знаком вопроса ? . Его также называют «тернарный», так как этот оператор, единственный в своём роде, имеет три аргумента.

let result = условие ? значение1 : значение2;

Сначала вычисляется условие : если оно истинно, тогда возвращается значение1 , в противном случае – значение2 .

let accessAllowed = (age > 18) ? true : false;

Технически, мы можем опустить круглые скобки вокруг age > 18 . Оператор вопросительного знака имеет низкий приоритет, поэтому он выполняется после сравнения > .

Этот пример будет делать то же самое, что и предыдущий:

// оператор сравнения "age > 18" выполняется первым в любом случае // (нет необходимости заключать его в скобки) let accessAllowed = age > 18 ? true : false;

Но скобки делают код более простым для восприятия, поэтому мы рекомендуем их использовать.

На заметку:

В примере выше вы можете избежать использования оператора вопросительного знака ? , т.к. сравнение само по себе уже возвращает true/false :

// то же самое let accessAllowed = age > 18;

Несколько операторов „?“

Последовательность операторов вопросительного знака ? позволяет вернуть значение, которое зависит от более чем одного условия.

let age = prompt('Возраст?', 18); let message = (age < 3) ? 'Здравствуй, малыш!' : (age < 18) ? 'Привет!' : (age < 100) ? 'Здравствуйте!' : 'Какой необычный возраст!'; alert( message );

Поначалу может быть сложно понять, что происходит. Но при ближайшем рассмотрении мы видим, что это обычная последовательная проверка:

  1. Первый знак вопроса проверяет age < 3 .
  2. Если верно – возвращает 'Здравствуй, малыш!' . В противном случае, проверяет выражение после двоеточия „:“, вычисляет age < 18 .
  3. Если это верно – возвращает 'Привет!' . В противном случае, проверяет выражение после следующего двоеточия „:“, вычисляет age < 100 .
  4. Если это верно – возвращает 'Здравствуйте!' . В противном случае, возвращает выражение после последнего двоеточия – 'Какой необычный возраст!' .

Вот как это выглядит при использовании if..else :

if (age < 3) < message = 'Здравствуй, малыш!'; >else if (age < 18) < message = 'Привет!'; >else if (age < 100) < message = 'Здравствуйте!'; >else

Нетрадиционное использование „?“

Иногда оператор «вопросительный знак» ? используется в качестве замены if :

let company = prompt('Какая компания создала JavaScript?', ''); (company == 'Netscape') ? alert('Верно!') : alert('Неправильно.');

В зависимости от условия company == 'Netscape' , будет выполнена либо первая, либо вторая часть после ? .

Здесь мы не присваиваем результат переменной. Вместо этого мы выполняем различный код в зависимости от условия.

Не рекомендуется использовать оператор вопросительного знака таким образом.

Несмотря на то, что такая запись короче, чем эквивалентная инструкция if , она хуже читается.

Вот, для сравнения, тот же код, использующий if :

let company = prompt('Какая компания создала JavaScript?', ''); if (company == 'Netscape') < alert('Верно!'); >else

При чтении глаза сканируют код по вертикали. Блоки кода, занимающие несколько строк, воспринимаются гораздо легче, чем длинный горизонтальный набор инструкций.

Смысл оператора «вопросительный знак» ? – вернуть то или иное значение, в зависимости от условия. Пожалуйста, используйте его именно для этого. Когда вам нужно выполнить разные ветви кода – используйте if .

Задачи

if (строка с нулём)

важность: 5

Выведется ли alert ?

if ("0")

Да, выведется.

Любая строка, кроме пустой (а строка "0" – не пустая), в логическом контексте становится true .

Можно запустить и проверить:

if ("0")

Название JavaScript

важность: 2

Используя конструкцию if..else , напишите код, который будет спрашивать: „Какое «официальное» название JavaScript?“

Если пользователь вводит «ECMAScript», то показать: «Верно!», в противном случае – отобразить: «Не знаете? ECMAScript!»

Операторы выбора — if , if-else и switch

if-else switch Операторы if выбора и инструкции для выполнения из множества возможных путей на основе значения выражения. Оператор if выполняет инструкцию только в том случае, если заданное логическое выражение вычисляется true . Оператор if-else позволяет выбрать, какие из двух путей кода следует выполнять на основе логического выражения. Оператор switch выбирает список инструкций для выполнения на основе сопоставления шаблона с выражением.

Инструкция if

Оператор if может быть в любой из следующих двух форм:

    Оператор if с частью else выбирает для выполнения один из двух операторов на основе значения логического выражения, как показано в следующем примере:

DisplayWeatherReport(15.0); // Output: Cold. DisplayWeatherReport(24.0); // Output: Perfect! void DisplayWeatherReport(double tempInCelsius) < if (tempInCelsius < 20.0) < Console.WriteLine("Cold."); >else < Console.WriteLine("Perfect!"); >> 
DisplayMeasurement(45); // Output: The measurement value is 45 DisplayMeasurement(-3); // Output: Warning: not acceptable value! The measurement value is -3 void DisplayMeasurement(double value) < if (value < 0 || value >100) < Console.Write("Warning: not acceptable value! "); >Console.WriteLine($"The measurement value is "); > 

Операторы if можно вкладывать для проверки нескольких условий, как показано в следующем примере:

DisplayCharacter('f'); // Output: A lowercase letter: f DisplayCharacter('R'); // Output: An uppercase letter: R DisplayCharacter('8'); // Output: A digit: 8 DisplayCharacter(','); // Output: Not alphanumeric character: , void DisplayCharacter(char ch) < if (char.IsUpper(ch)) < Console.WriteLine($"An uppercase letter: "); > else if (char.IsLower(ch)) < Console.WriteLine($"A lowercase letter: "); > else if (char.IsDigit(ch)) < Console.WriteLine($"A digit: "); > else < Console.WriteLine($"Not alphanumeric character: "); > > 

В контексте выражения можно использовать условный оператор ?: для вычисления одного из двух выражений на основе значения логического выражения.

Инструкция switch

Оператор switch выбирает список операторов, который нужно выполнить, на основе соответствия шаблона выражению соответствия, как показано в следующем примере:

DisplayMeasurement(-4); // Output: Measured value is -4; too low. DisplayMeasurement(5); // Output: Measured value is 5. DisplayMeasurement(30); // Output: Measured value is 30; too high. DisplayMeasurement(double.NaN); // Output: Failed measurement. void DisplayMeasurement(double measurement) < switch (measurement) < case < 0.0: Console.WriteLine($"Measured value is ; too low."); break; case > 15.0: Console.WriteLine($"Measured value is ; too high."); break; case double.NaN: Console.WriteLine("Failed measurement."); break; default: Console.WriteLine($"Measured value is ."); break; > > 

В предыдущем примере оператор switch использует следующие шаблоны:

  • Реляционные шаблоны — для сравнения результата выражения с константой.
  • Шаблон константы: проверьте, равен ли результат выражения константе.

Сведения о шаблонах, поддерживаемых оператором switch , см. в статье Шаблоны.

В предыдущем примере также показана ветвь default . Ветвь default указывает операторы, которые нужно выполнить, если выражение не соответствует ни одному другому шаблону. Если выражение совпадения не соответствует ни одному шаблону регистра, и нет default регистра, элемент управления попадает через инструкцию switch .

Оператор switch выполняет список операторов в первом разделе switch, шаблон ветви которого соответствует выражению соответствия, а условие ветви, если оно есть, равно true . Оператор switch оценивает шаблоны ветвей в порядке, в котором они указаны в коде, сверху вниз. Компилятор создает ошибку, если оператор switch содержит недостижимую ветвь. Это ветвь, которая уже была обработана в верхнем регистре или шаблон которой невозможно сопоставить.

Ветвь default может находиться в любом месте в операторе switch . Независимо от его положения, регистр вычисляется только в том случае, default если все остальные шаблоны регистра не совпадают или goto default; оператор выполняется в одном из разделов коммутатора.

Можно указать несколько шаблонов ветвей для одного раздела оператора switch , как показано в следующем примере:

DisplayMeasurement(-4); // Output: Measured value is -4; out of an acceptable range. DisplayMeasurement(50); // Output: Measured value is 50. DisplayMeasurement(132); // Output: Measured value is 132; out of an acceptable range. void DisplayMeasurement(int measurement) < switch (measurement) < case < 0: case >100: Console.WriteLine($"Measured value is ; out of an acceptable range."); break; default: Console.WriteLine($"Measured value is ."); break; > > 

В операторе switch элемент управления не может переходить от одного раздела коммутатора к следующему. Как показано в примерах этого раздела, обычно в конце каждого раздела switch используется оператор break для передачи управления из оператора switch . Вы также можете использовать операторы return и throw, чтобы передать управление из оператора switch . Чтобы имитировать такое поведение ветви и передать управление другому разделу switch, можно использовать оператор goto .

В контексте оператора можно использовать оператор switch , чтобы вычислить одно выражение из списка кандидатов на основе сопоставления шаблона с выражением.

Охранные условия

Шаблон ветви может недостаточно полно выражать условие выполнения раздела switch. В этом случае можно использовать условие ветви. Это дополнительное условие, которое должно выполняться помимо соответствия шаблону. Условие случая должно быть логическим выражением. Охранное условие указывается после ключевого слова when , идущего за шаблоном, как показано в следующем примере.

DisplayMeasurements(3, 4); // Output: First measurement is 3, second measurement is 4. DisplayMeasurements(5, 5); // Output: Both measurements are valid and equal to 5. void DisplayMeasurements(int a, int b) < switch ((a, b)) < case (>0, > 0) when a == b: Console.WriteLine($"Both measurements are valid and equal to ."); break; case (> 0, > 0): Console.WriteLine($"First measurement is , second measurement is ."); break; default: Console.WriteLine("One or both measurements are not valid."); break; > > 

В предыдущем примере используются шаблоны положений со вложенными шаблонами отношений.

Спецификация языка C#

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#:

См. также

  • справочник по C#
  • Условный оператор ?:
  • Логические операторы
  • Шаблоны
  • Выражение switch
  • Добавление отсутствующих случаев для переключения инструкции (правило стиля IDE0010)

Курсы javascript

Здравствуйте! Нужна помощь!
Как прописать в одно if несколько условий? Только не пишите с множеством else if, мне нужно именно в одно if (для того, что бы не штамповать 100500 if else с одним и тем же действием).
Если что, интересует именно OR и ||, вот только не знаю, как оформить(
Надеюсь, понятно изложил)

Вот не рабочий пример 🙁

if ((Request == 'a') OR (Request == 'b')) < alert('Отработано!');

Последний раз редактировалось Slandewi, 29.07.2016 в 10:04 .

Как в операторе if проверить сразу несколько условий?

Author24 — интернет-сервис помощи студентам

Несколько условий в операторе If
Подскажите, как правильно записать эту часть кода. If OptionButton2 Then With Selection.Font.

Возможно ли задать несколько условий в операторе If
возможно ли задать несколько условий в операторе if например: if усл.1 или усл.2 или усл.3.

Как сделать несколько условий сразу
Подскажите, пожалуйста. Как сделать несколько условий сразу, или может быть подскажите как сделать.

Можно ли в условном операторе задавать несколько условий?
Можно ли в условном операторе задавать несколько условий?если да, то как?

Регулярные выражения: несколько условий сразу
Мне нужна ваша помощь. У меня есть два разных регулярных выражения. Я использую его для поле.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *