Условные операторы в JavaScript (if...else, switch...case)

Условный оператор (оператор ветвления, условная инструкция) — оператор, конструкция языка программирования, обеспечивающая выполнение:

  • определённой команды (набора команд) только при условии истинности некоторого логического выражения, либо
  • выполнение одной из нескольких команд (наборов команд) в зависимости от значения некоторого выражения.

Условный оператор if

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

Например:

Не путайте примитивы (логические значения) true и false с правдивостью или ложностью булева объекта. Любое значение, которое не undefined, null, 0, NaN или пустая строка (""), и любой объект, включая объект Boolean, значение которого является ложным, считается правдивым при использовании в качестве условия. Например:

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

Рекомендуется в конструкции if() всегда использовать фигурные скобки {}, даже если выполняется только одна команда. Это улучшает читабельность кода.

Условный (тернарный) оператор "?"

Условный (тернарный) оператор - единственный оператор в JavaScript, принимающий три операнда. Он часто используется в качестве укороченного варианта условного оператора if.

Условный оператор возвращает одно значение из двух данных в зависимости от логического значения условия:

(условие) ?  (выражение1 если True) : (выражение2 если False)

Оператор возвращает значение выражения1, если условие верно, и значение выражения2 в противном случае.

Условие - это выражение, принимающее значение true или false. Выражение1, выражение2 могут принадлежать любому типу.

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

Пример

[свернуть]

При присвоении значения также возможно выполнение более одной операции. В этом случае переменной будет присвоено то значение, которое стоит последним в списке значений, разделенных запятой.

Пример

[свернуть]

Условный оператор if ... else

Условие if выполняет инструкцию, если указанное условие истинно. Если условие не выполняется (ложно), то выполняется другая инструкция, следующая за оператором else:

Инструкция, выполняемая в случае если условиe истинно (true) или ложно (false), может быть любой, в том числе и вложенным if.

Для группировки нескольких инструкций используется блок else {...}. Если никакого действия не требуется, то используется пустая инструкция.

Примеры

Проверка наличия значения выражения:

Проверка массива на наличие значений:

Использование логических операторов или ( || ), и ( && ), не ( ! ):

Проверка объекта на тип "массив":

[свернуть]

Если необходимо проверить несколько вариантов условия, то для этого используется блок else if. Обратите внимание, что в JavaScript нет ключевого слова elseif (в одно слово).

Использование else if () 

Особенности присваивания в условном выражении

Целесообразно не использовать простые присваивания в условном выражении, потому что при взгляде на код присваивание можно путать с равенством. Например, не используйте следующий код:

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

Инструкция (условный оператор) switch...case

Инструкция switch сравнивает значение выражения expression с значениями, перечисленными внутри неё в блоках case, а затем выполняет соответствующие инструкции.

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

Опциональная инструкция break выполняет выход из блока switch. Она может располагаться в каждом из случаев, но не является обязательной. Если в конструкции case не будет break, то будут также выполнены инструкции следующих case, при этом проверка на соответствие выражению выполняться не будет .

Пример:

"Склеенные" case

Основные отличия switch...case от if...else:

  • switch...case обычно более компактен, чем множество вложенных if...else , и поэтому более удобочитаем;
  • switch...case может быть оптимизирован компилятором с помощью таблицы переходов, что повышает быстродействие (switch отправляет сразу же в соответствующий case , вместо того чтобы оценивать все условия, которые потребовались бы в цепочке if...else ).

Оператор условного присваивания  ??=

Оператор условного присваивания a ??= b передает в переменную a значение переменной b, только если значение a равно undefined или null:

 

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.