Условный оператор ветвления (if) реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true. Тернарный оператор (?:) является альтернативным вариантом конструкции if…else, позволяющим сократить ваш код, фактически записывая условие в одну строчку.

Условный оператор if (в переводе с англ. — «если») реализует выполнение определённых команд при условии, что некоторое логическое выражение (условие) принимает значение «истина» true.

Синтаксис:

if (условие) однострочная инструкция;

  или

if (условие) {
  блочная инструкция
}

Условие в этой конструкции может быть любым выражением. JavaScript автоматически преобразует результат выра­жения в логическое значение, вызывая для него функцию Boolean(). Если условие эквивалентно true, выполняется инструкция, в противном случае – нет.

Выполняемая инструкций может быть представлена одной строкой или блоком кода (группой строк в фигурных скобках), например:

Выполнить код »

Примечание: Рекомендуется всегда использовать фигурные скобки, даже если нужно вы­полнить всего одну строку кода. Это ясно показывает, что должно быть выполнено в каждом случае и улучшает читаемость кода.

Используйте конструкцию if....else для выполнения первой инструкции, если условие истинно true, и второй инструкции, если условие ложно false.

Синтаксис:

if (условие) {
  инструкция 1
}  
else {
  инструкция 2
}

Следующий пример выведет соответствующее окно приветствия в зависимости от текущего времени в вашем браузере:

Выполнить код »

Инструкция else if используется в случае, если требуется выполнить один из многих фрагментов кода. Формально это не JavaScript-инструкция, а лишь распространенный стиль программирования, который заключается в применении повторяющихся инструкций if/else:

if (n == 1) {
    инструкция 1
}
else if (n == 2) {
    инструкция 2
}
else if (n == 3) {
    инструкция 3
}
else {
// Если все остальные условия else не выполняются, исполняем инструкцию 4
}

Приведенный выше код – это всего лишь последователь­ность инструкций if. Каждая следующая if является частью else предыдущей инструкции if. Запись else if более удобная, чем ее синтаксически эквивалентная форма, показывающая вложенность инструкций if:

if (n == 1) {
   инструкция 1
}
else {
if (n == 2) {
   инструкция 2
}
else {
if (n == 3) {
   инструкция 3
}
else {
// Если все остальные условия else не выполняются, исполняем инструкцию 4
}
}
}

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

Выполнить код »

Условный оператор (?:) – это единственный тернарный (от лат. ternarius — «тройной») оператор с тремя операндами в JavaScript. Тернарный оператор возвращает свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом.

Первый операнд используется в качестве условия, он вычисляется и преобразуется, при необходимо, в булево значение. Если условие верно true, то вычисляется и возвращается значение1. Если условие неверно false, то вычисляется и возвращается значение2:

условие ? значение1 : значение2

Например:

Выполнить код »

Читается этот код так: если а больше b, то c = a, иначе c = b.

Можно записать тоже самое через if/else:

Выполнить код »

Вложенные инструкции if/else, так же можно заменить последовательностью из тернарных операторов:

Выполнить код »

Условный оператор ?: имеет ассоциативность справа налево, поэтому следующие две инструкции эквивалентны:

z = a?b:c?d:e?f:g;
z = a?b:(c?d:(e?f:g));
Есть и другой вариант сокращенной записи инструкции if/else, основанный использовании лигического И &&. Вспом­ните, что оператор && вычисляет второй операнд только при условии, если результат вычисления первого операнда – истина true. В программировании данный процесс называют непол­ным вычислением, поскольку, если в логическом И && первый операнд возвращает false, то общий результат тоже будет false. Поэтому вычисление и преобразование второго операнда, в этом случае, не выполняется.
Выполнить код »

В предыдущем примере оператор && снача­ла проверяет выполняется ли временное условие (чему равна переменная time). Если условие выполняется, то в переменную message будет записа­на соответствующая строка приветствия. В противном случае, в силу побочного эффекта, связанного с неполным вычислением, оператор && выведет false и т.д. Этот метод используется не очень часто, но если вам встретится нечто подобное, то вы теперь знаете, как работают подобные инструкции.


  • Вам даны две переменные x и y, менять их не нужно. При помощи тернарного оператора сравните их и если x больше, чем y, то выведите фразу: "x больше, чем y", иначе выведите фразу: "x не больше, чем y".

    var x = 10, y = 7;
    /* ваш код */
    
    Показать решение

    Решение:

    Ответ: "x больше, чем y".

    Выполнить код »
  • Четное или нечетное число

    Пользователь вводит какое-то число (num). Используя конструкцию if..else, напишите код, который делает запрос: «Введите число».
    Если посетитель вводит четное число, то выводить «"Число " + num + " четное"», если нечетное: "Число " + num + " нечетное".

    Показать решение

    Решение:

    Суть решения заключается в том, что проверяется остаток от деления числа на 2. Если остаток равен 0, значит число чётное, иначе – нечётное. Получить остаток от деления в можно с помощью оператора %.

    Выполнить код »
  • Сколько цифр в числе и его знак

    Напишите код, который предлагает пользователю ввести целое число. Нужно вывести на экран сколько в этом числе цифр, а также положительное оно или отрицательное. Например, "Число " + num + " однозначное положительное". Достаточно будет определить, является ли число однозначным, двухзначным или трехзначным и более.

    Показать решение

    Решение:

    Алгоритм решения задачи:

    1. Проверяем, не является ли число нулем. Ноль не является ни положительным, ни отрицательным.
    2. После этого проверяем количество знаков в в положительном числе и выводим на эран соответствующее сообщение.
    3. Проверяем количество знаков в отрицательном числе, выводим сообщение.

    Выполнить код »
  • Принадлежность точки окружности

    Даны координаты точки A(x = 4, y = 9) и радиус окружности (R = 10) с центром в начале координат. Используя тернарный оператор напишите код, который будет выводить сообщение о том, лежит ли данная точка внутри окружности или за её пределами. Для извлечения квадратного корня из числа z вам понадобится метод Math.sqrt(z).

    Принадлежность точки окружности

    Показать решение

    Решение:

    Следует рассмотреть прямоугольный треугольник, один катет которого лежит на любой оси, а другой является перпендикуляром к этой оси из заданной точки A. В этом случае длины катетов треугольника равны значениям x и y, а гипотенуза L является отрезком, соединяющим начало координат O с точкой A. Если этот отрезок L больше радиуса круга R, то значит точка лежит вне окружности.

    Длина гипотенузы находится по теореме Пифагора: L = Math.sqrt(x*x + y*y).

    Выполнить код »
  • Определить существование треугольника по трем сторонам

    У треугольника сумма любых двух сторон должна быть больше третьей. Иначе две стороны просто <лягут> на третью и треугольника не получится.
    Пользователь вводит поочерёдно через prompt длины трех сторон. Используя конструкцию if..else, напишите код, который должен определять, может ли существовать треугольник при таких длинах. Т. е. нужно сравнить суммы двух любых строн с оставшейся третьей стороной. Чтобы треугольник существовал, сумма всегда должна быть больше отдельной стороны.

    Треугольник

    Показать решение

    Решение:

    Поскольку у треугольника три стороны, то можно составить три варианта сложения двух сторон: a + b, b + c, a + c. Первую сумму сравниваем с оставшейся стороной c, вторую - с a и третью - с b. Если хотя бы в одном случае сумма окажется не больше третьей стороны, то можно сделать вывод, что треугольник не существует.

    Выполнить код »
  • Найти максимальное число из трех

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

    Показать решение

    Решение:

    Выполнить код »
  • Найти сумму или произведение цифр трехзначного числа

    Пользователь вводит через prompt трёхзначное число. Проверить трехзначное число на четность и найти сумму его цифр, если число четное, или произведение его цифр, если число нечетное.

    Показать решение

    Решение:

    Чтобы извлечь первую цифру трехзначного числа, надо его разделить на 100 и округлить воспользовавшись побитовыми операторами.
    Чтобы извлечь вторую цифру трехзначного числа, можно пойти разными способами. Например, найти остаток от деления на 100, потом разделить на 10 и снова округлить.
    Последняя цифра любого числа, обозначающая единицы, извлекается путем нахождения остатка от деления на 10: n % 10.

    Проверить число на четность. Найти остаток от деления числа на 2. Для этого использовать оператор %. Если результат равен нулю, значит число четное. Иначе – нечетное.

    Выполнить код »

Комментарии

пожелания к комментариям…
  • Приветствуются комментарии, соответствующие теме урока: вопросы, ответы, предложения.
  • Одну строчку кода оборачивайте в тег <code>, несколько строчек кода — в теги <pre><code>...ваш код...</code></pre>.
  • Допускаются ссылки на онлайн-песочницы (codepen, plnkr, JSBin и др.).