Условные операторы в JavaСценарий: если, иначе и иначе если
⚡ Умное резюме
Условные операторы в JavaСкрипт определяет, какой блок кода будет выполняться, проверяя условие, а конструкции if, if…else и if…else if…else охватывают практически все варианты ветвления, которые могут понадобиться начинающему программисту.
JavaУсловные операторы скрипта
В основном существует три типа условных операторов. JavaСценарий.
- если Заявление: оператор if выполняет код на основе условия.
- если… иначе Заявление: Оператор if…else состоит из двух блоков кода; когда условие истинно, он выполняет первый блок кода, а когда условие ложно, он выполняет второй блок кода.
- if…else if…else Оператор: Когда необходимо проверить несколько условий и выполнить разные блоки кода в зависимости от того, какое условие истинно, используется оператор if…else if…else.
Ниже рассматривается каждая из трех форм, ее синтаксис и рабочий пример. Те же правила применяются независимо от того, находится ли скрипт в определенном месте. внутри страницы или во внешнем файлеи независимо от того, записано ли условие на верхнем уровне или внутри функция.
Как использовать условные операторы
Условные операторы используются для определения потока выполнения на основе различных условий. Если условие истинно, вы можете выполнить одно действие, а если условие ложно, вы можете выполнить другое действие.
Приведенная ниже диаграмма иллюстрирует эту идею как развилку: одно условие оценивается один раз, и управление передается либо по истинной ветви, либо по ложной, но никогда по обеим одновременно.
Если заявление
Синтаксис:
if(condition) { lines of code to be executed if condition is true }
Вы можете использовать if Утверждение, если вы хотите проверить только определенное условие. Когда выражение внутри скобок принимает значение trueБлок выполняется; когда его значение равно... falseИнтерпретатор пропускает этот момент, и скрипт переходит к следующему оператору.
Попробуйте сами:
<html>
<head>
<title>IF Statments!!!</title>
<script type="text/javascript">
var age = prompt("Please enter your age");
if(age>=18)
document.write("You are an adult <br />");
if(age<18)
document.write("You are NOT an adult <br />");
</script>
</head>
<body>
</body>
</html>
В примере посетителю запрашивается возраст, а затем это значение проверяется дважды: один раз для лиц старше 18 лет, один раз для лиц младше 18 лет. Поскольку два отдельных if используются утверждения вместо elseОба условия проверяются каждый раз при загрузке страницы.
Современный эквивалент: Приведённый выше код сохраняется в точно таком виде, в каком он был опубликован. В текущей версии... JavaВ скрипте обычно используется та же логика. let or const вместо var, где console.log() or textContent вместо document.write()и без type="text/javascript" атрибут, который в HTML5 является необязательным.
Условие If…Else
Синтаксис:
if(condition) { lines of code to be executed if the condition is true } else { lines of code to be executed if the condition is false }
Вы можете использовать if...else Если вам нужно проверить одно условие и выполнить отдельный блок кода для каждого результата, то всегда будет выполняться только один из двух блоков, поэтому отдельная вторая проверка не требуется.
Попробуйте сами:
<html>
<head>
<title>If...Else Statments!!!</title>
<script type="text/javascript">
// Get the current hours
var hours = new Date().getHours();
if(hours<12)
document.write("Good Morning!!!<br />");
else
document.write("Good Afternoon!!!<br />");
</script>
</head>
<body>
</body>
</html>
Здесь new Date().getHours() Возвращает текущий час по часам браузера в виде числа от 0 до 23. Любое значение меньше 12 приводит к утреннему приветствию, а все остальные значения приводят к обратному результату. else филиал.
Если… Иначе Если… Иначе Утверждение
Синтаксис:
if(condition1) { lines of code to be executed if condition1 is true } else if(condition2) { lines of code to be executed if condition2 is true } else { lines of code to be executed if condition1 is false and condition2 is false }
Вы можете использовать if...else if...else Условие, если вы хотите проверить более двух условий. Условия оцениваются сверху вниз, выполнение останавливается на первом истинном условии, а затем выполняется заключительная проверка. else выступает в качестве универсального решения, когда ни одно из них не совпадает.
Попробуйте сами:
<html>
<head>
<script type="text/javascript">
var one = prompt("Enter the first number");
var two = prompt("Enter the second number");
one = parseInt(one);
two = parseInt(two);
if (one == two)
document.write(one + " is equal to " + two + ".");
else if (one<two)
document.write(one + " is less than " + two + ".");
else
document.write(one + " is greater than " + two + ".");
</script>
</head>
<body>
</body>
</html>
Обратите внимание на два вызова parseInt()Значения, возвращаемые функцией prompt() Это строки, поэтому сравнение без преобразования будет сравнивать текст, а не числа, и в результате "9" будет считаться больше "10".
троичный OperaTor: Сокращенная запись для if…else
Когда if...else Блок выбирает только между двумя значениями, тогда как условный (тернарный) оператор выражает то же решение в виде одного выражения. Это единственное значение. JavaОператор скрипта, принимающий три операнда: условие, вопросительный знак, значение, используемое, когда условие истинно, двоеточие и значение, используемое, когда оно ложно.
// if...else form let message; if (age >= 18) { message = "adult"; } else { message = "minor"; } // same decision as a ternary expression let label = age >= 18 ? "adult" : "minor";
Используйте тернарный оператор, когда это улучшает читаемость, а не просто для экономии строк:
- Хорошо подходит: Выбор одного из двух значений для присвоения, возврата или вставки в шаблонную строку.
- Плохой подбор: Ветви кода, которые выполняют несколько операторов, вызывают функции для получения их побочных эффектов или нуждаются в собственных локальных переменных.
- Избегайте вложения: Тройную структуру внутри тройной структуры гораздо сложнее прочитать, чем...
else ifцепь.
Оператор switch против if…else if…else
Вдоль else if Цепочка, в которой одна и та же переменная постоянно сравнивается с различными фиксированными значениями, обычно выглядит более наглядно в виде switch Оператор switch вычисляет выражение один раз, затем переходит к соответствующему оператору. case; break предотвращает переход выполнения в следующий случай, и default играет роль финалиста else.
switch (day) { case "Sat": case "Sun": document.write("Weekend"); break; default: document.write("Weekday"); }
Эти две структуры не взаимозаменяемы в любой ситуации:
| Точка сравнения | если… иначе, если… иначе | переключатель |
|---|---|---|
| Вид теста | Любое логическое выражение, включая диапазоны, такие как hours<12 |
Равенство только по отношению к фиксированным значениям. |
| использованное сравнение | Какой бы оператор вы ни написали | Строгое сравнение, поэтому "5" не совпадает 5 |
| читабельность | Лучше всего подходит при нескольких несвязанных заболеваниях. | Лучший вариант для многих значений одной переменной. |
| Распространенная ошибка | Забудьте о завершающем элементе. else |
Забыв breakчто приводит к сбою выполнения. |
Истинные и ложные ценности в JavaУсловия сценария
Условие не обязательно должно быть сравнением. JavaСкрипт сначала преобразует все, что находит внутри скобок, в логическое значение, поэтому... if (name) Это допустимый код. Только шесть значений преобразуются в false: false, 0пустая строка, null, undefined и NaNВсё остальное — правда, включая строку. "0", пустой массив и пустой объект.
Большинство ошибок, связанных с условиями в скриптах начинающих, возникают из-за небольшого списка недочетов:
- Присваивание вместо сравнения:
if (x = 5)назначает и всегда правдиво;if (x === 5)сравнивает. - Неожиданно возникает вопрос о нестрогом равенстве:
==преобразует типы перед сравнением, поэтому"" == 0Это правда. Предпочитать===. - Отсутствуют брекеты: без
{}К этой ветви относится только следующее отдельное утверждение, точно так же, как и в приведенных выше примерах. - Непреобразованный входной сигнал: ценности из
prompt()и поля формы являются строками до тех пор, покаparseInt()orNumber()преобразует их. - Недоступные ветви: в
else ifПрименяйте цепочку условий, начиная с самых узких, иначе более широкое и раннее испытание всегда будет иметь решающее значение.

