Условные операторы в JavaСценарий: если, иначе и иначе если

⚡ Умное резюме

Условные операторы в JavaСкрипт определяет, какой блок кода будет выполняться, проверяя условие, а конструкции if, if…else и if…else if…else охватывают практически все варианты ветвления, которые могут понадобиться начинающему программисту.

  • 🔘 Синтаксис: Оператор if выполняет свой блок только тогда, когда условие внутри скобок оценивается как истинное.
  • ☑️ Две ветви: Конструкция if…else предоставляет резервный блок, который выполняется всякий раз, когда условие ложно.
  • Много филиалов: Последовательность операторов else if проверяет несколько условий по порядку и останавливается на первом совпадении.
  • 🧪 Сокращенная стенография: Тернарный оператор сводит простой оператор if…else к одному выражению, возвращающему значение.
  • 🇧🇷 Альтернатива: Оператор switch сравнивает одно значение со множеством фиксированных вариантов гораздо удобнее, чем длинная цепочка операторов.
  • 📊 Подводные камни: Большинство ошибок в условных операторах вызваны некорректными значениями, лишним оператором присваивания и отсутствующими фигурными скобками.

Условные операторы в JavaСценарий

JavaУсловные операторы скрипта

В основном существует три типа условных операторов. JavaСценарий.

  1. если Заявление: оператор if выполняет код на основе условия.
  2. если… иначе Заявление: Оператор if…else состоит из двух блоков кода; когда условие истинно, он выполняет первый блок кода, а когда условие ложно, он выполняет второй блок кода.
  3. if…else if…else Оператор: Когда необходимо проверить несколько условий и выполнить разные блоки кода в зависимости от того, какое условие истинно, используется оператор if…else if…else.

Ниже рассматривается каждая из трех форм, ее синтаксис и рабочий пример. Те же правила применяются независимо от того, находится ли скрипт в определенном месте. внутри страницы или во внешнем файлеи независимо от того, записано ли условие на верхнем уровне или внутри функция.

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

Условные операторы используются для определения потока выполнения на основе различных условий. Если условие истинно, вы можете выполнить одно действие, а если условие ложно, вы можете выполнить другое действие.

Приведенная ниже диаграмма иллюстрирует эту идею как развилку: одно условие оценивается один раз, и управление передается либо по истинной ветви, либо по ложной, но никогда по обеим одновременно.

Блок-схема, показывающая JavaВ скрипте условие разветвляется на истинный и ложный пути.

Если заявление

Синтаксис:

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() or Number() преобразует их.
  • Недоступные ветви: в else if Применяйте цепочку условий, начиная с самых узких, иначе более широкое и раннее испытание всегда будет иметь решающее значение.

Часто задаваемые вопросы (FAQ)

Один = Присваивает значение и случайно делает условие истинным. == сравнение выполняется после преобразования типов, поэтому "" == 0 правда. === Этот параметр сравнивает значение и тип, и является более безопасным вариантом по умолчанию.

Искусственный интеллект может перефразировать незнакомую фразу. else if Объяснение в простой форме: предложите входные значения, которые достигают каждой ветви, и отметьте условие, которое никогда не может быть истинным. Всегда запускайте код самостоятельно, поскольку объяснение — это скорее рекомендация, чем доказательство.

Часто да. Второй пилот GitHub Завершает ветвление кода из комментария или частичного условия. Проверяет выбранные граничные значения, поскольку сгенерированный > там, где это было необходимо. >= Это легко пропустить.

Языковых ограничений нет. Любое утверждение может появляться внутри ветки, включая дальнейшее. ifБолее двух уровней логика становится трудноразличимой, поэтому объедините тесты с && или вернуться раньше.

Нет. Без фигурных скобок ветка принадлежит только следующему единственному оператору, поэтому приведенные выше примеры работают. Добавление фигурных скобок все же рекомендуется, поскольку вторая строка, добавленная позже, незаметно выходит за пределы ветки.

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

getHours() Функция возвращает текущее время по часам посетителя в виде числа от 0 до 23, поэтому сравнение с числом 12 разделяет день на утро и день без дополнительного анализа.

№ JavaВ скрипте используются два отдельных ключевых слова. else ifс пробелом между ними. Одно слово elseif Принадлежит к PHP и некоторым языкам шаблонов и вызывает синтаксическую ошибку в браузере.

Подведем итог этой публикации следующим образом: