Блоки
JavaScript позволяет нам объединить несколько выражений в одно. Такое выражение называется 
{
b = '12';
c = a — b;
}
Как правило, блоки не существуют сами по себе. Чаще всего они входят в состав других сложных выражений.
Условные выражения
Листинг 14.7 иллюстрирует формат условного выражения.
Листинг 14.7
if (
else
Существует также другая, 'вырожденная' разновидность условного выражения,
содержащая только одно выражение, которое выполняется при выполнении условия и пропускается, если условие не выполнено:
if (
Для написания условных выражений предусмотрены особые ключевые слова if и
else. Отметим, что 
Если 
Значения null или undefined преобразуются в false. Не забываем об этом.
Рассмотрим несколько примеров.
В листинге 14.8 мы сравниваем значение переменной x с единицей и в зависимости от результатов сравнения присваиваем переменным f и h разные значения.
Листинг 14.8
if (x == 1) {
a = 'Единица';
b = 1;
}
else {
a = 'Не единица';
b = 22222;
}
Условие может быть довольно сложным (листинг 14.9).
Листинг 14.9
if ((x == 1) && (y > 10))
f = 3;
else
f = 33;
Здесь мы использовали сложное условие, возвращающее значение true в случае,
если значение переменной x равно 1 и значение переменной y больше 10. Заметим также, что мы подставили одиночные выражения, т. к. фрагменты кода слишком просты, чтобы оформлять их в виде блоков.
Условный оператор?
Если условное выражение совсем простое, мы можем записать его немного по-другому. А именно, воспользоваться 
Достоинство этого оператора в том, что он может быть частью выражения. Например:
f = (x == 1 && y > 10)? 3: 33;
Фактически мы записали условное выражение из предыдущего примера, но в виде простого выражения. Компактность кода налицо. Недостаток же оператора? в том, что с его помощью можно записывать только самые простые условные выражения.
Приоритет условного оператора один из самых низких. Приоритет ниже него имеют только операторы присваивания.
Выражения выбора
Листинг 14.10
switch (
case 
[break;]
[case 

 
                