Условные конструкции

Последнее обновление: 23.10.2023

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

Конструкция if..else

Конструкция if..else проверяет некоторое условие и если это условие верно, то выполняет некоторые действия. Простейшая форма конструкции if..else:

if(условие){
	
	некоторые действия
}

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

Например:

const income = 100;
if(income > 50) {
	
	console.log("доход больше 50");
}

Здесь в конструкции if используется следующее условие: income > 50. Если это условие возвращает true, то есть если константа income имеет значение больше 50, то браузер отображает сообщение. Если же значение income меньше 50, то никакого сообщения не отображается.

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

const income = 100;
if(income > 50) console.log("доход больше 50");

или перенести действия на следующую строку

const income = 100;
if(income > 50) 
	console.log("доход больше 50");

Причем условия могут быть сложными:

const income = 100;
const age = 19;
if(income > 50 && age > 18){

	console.log("доход больше 50");
	console.log("возраст больше 18");
}

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

Конструкция if позволяет проверить наличие значения. Например:

let myVar = 89;
if(myVar){
	
	console.log(`Переменная myVar имеет значение: ${myVar}`);
}

Если переменная myVar имеет значение, как в данном случае, то в условной конструкции она возвратит значение true.

Противоположный вариант:

let myVar;
if(myVar){
    console.log(`Переменная myVar имеет значение: ${myVar}`);
}

Здесь переменная myVar не имеет значения. (В реальности она равна undefined) Поэтому условие в конструкии if возвратит false, и действия в блоке конструкции if не будут выполняться.

Но нередко для проверки значения переменной используют альтернативный вариант - проверяют на значение undefined и null:

if (myVar !== undefined && myVar !== null) {
	console.log(`Переменная myVar имеет значение: ${myVar}`);
}

Выражение else

Выше мы рассмотрели, как определить действия, которые выполняются, если условие после if истинно. Но что, если мы хотим также выполнять еще один набор инструкций, если условие ложно? В этом случае можно использовать блок else. Данный блок содержит инструкции, которые выполняются, если условие после if ложно, то есть равно false:

if(условие){
	действия, если условие истинно
}
else{
	действия, если условие ложно
}

То есть если условие после if истинно, выполняется блок if. Если условие ложно, выполняется блок else. Например:

const income = 45;
if(income > 50){

	console.log("Доход больше 50");
}
else{
	console.log("Доход меньше или равен 50");
}

Здесь константа income равна 45, поэтому условие после оператора if возвратит false, и управление перейдет к блоку else.

Также если блок else содержит одну инструкцию, то можно сократить конструкцию:

const income = 45;
if(income > 50) console.log("Доход больше 50");
else console.log("Доход меньше или равен 50");

Альтернативные условия и else if

С помощью конструкции else if мы можем добавить альтернативное условие к блоку if. Например, выше в условие значение income может быть больше определенном значению может быть меньше, а может быть равно ему. Отразим это в коде:

const income = 50;
if(income > 50) {
	console.log("Доход больше 50");
}
else if(income === 50){
	console.log("Доход равен 50");
}
else{
	console.log("Доход меньше 50");
}

В данном случае выполнится блок else if. При необходимости мы можем использовать несколько блоков else if с разными условиями:

const income = 500;
if(income < 200){

	console.log("Доход ниже среднего");
}
else if(income>=200 && income<300){
	
	console.log("Чуть ниже среднего");
}
else if(income>=300 && income<400){
	
	console.log("Средний доход");
}
else{
	console.log("Доход выше среднего");
}

При этом блок else применять необязательно:

const income = 500;
if(income < 200){

	console.log("Доход ниже среднего");
}
else if(income>=200 && income<300){
	
	console.log("Чуть ниже среднего");
}
else if(income>=300 && income<400){
	
	console.log("Средний доход");
}

True или false

В javascript любая переменная может применяться в условных выражениях, но не любая переменная представляет тип boolean. И в этой связи возникает вопрос, что возвратит та или иная переменная - true или false? Много зависит от типа данных, который представляет переменная:

  • undefined

    Возвращает false

  • null

    Возвращает false

  • Boolean

    Если константа/переменная равна false, то возвращается false. Соответствено если константа/переменная равна true, то возвращается true

  • Number

    Возвращает false, если число равно 0 или NaN (Not a Number), в остальных случаях возвращается true

    Например, следующая переменная будет возращать false:

    let x = NaN;
    if(x){	// false
    		
    }
    
  • String

    Возвращает false, если константа/переменная равна пустой строке, то есть ее длина равна 0, в остальных случаях возвращается true

    const emptyText = "";	// false - так как пустая строка
    const someText = "javascript";	// true - строка не пустая
    
  • Object

    Всегда возвращает true

    const user = {name:"Tom"};	// true
    const car = {};	// true
    

Конструкция switch..case

Конструкция switch..case является альтернативой использованию конструкции if..else и также позволяет обработать сразу несколько условий:

const income = 200;
switch(income){

	case 100 : 
		console.log("Доход равен 100");
		break;
	case 200 : 
		console.log("Доход равен 200");
		break;
	case 500 : 
		console.log("Доход равен 500");
		break;
}

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора сase. И если совпадение будет найдено, то будет выполняться определенный блок сase.

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

case 200 : 
	console.log("Доход равен 200");
	break;

Оператор break

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

let income = 200;
switch(income){
 
    case 100 : 
        console.log("Доход равен 100");
		income +=100;
		break;
    case 200 : 
        console.log("Доход равен 200");
		income +=100;
		break;
    case 500 : 
        console.log("Доход равен 500");
		income +=100;
		// break;	// здесь смысла в break нет, так как последний блок
}

Здесь опять income равно 200 и опять будет выполняться блок

case 200 : 
    console.log("Доход равен 200");
	income +=100;
	break;

Благодаря оператору break после выполнения блока произойдет выход из конструкции switch, и никакие другие блоки case не будут выполняться.

Но теперь уберем оператор break:

let income = 200;
switch(income){
 
    case 100 : 
        console.log("Доход равен 100");
		income +=100;
    case 200 : 
		console.log("Доход равен 200");
		income +=100;
    case 500 :
		console.log("Доход равен 500");
		income +=100;
}
console.log("Финальный доход равен", income);

Результат выполнения:

Доход равен 200
Доход равен 500
Финальный доход равен 400

Здесь изначально переменная income опять равна 200, соответственно будет выполняться блок

case 200 : 
    console.log("Доход равен 200");
	income +=100;

Значение income увеличивается на 100, однако в конце блока нет оператора break, поэтому управление перейдет к проверке условия в следующий блок:

case 500 : 
    console.log("Доход равен 500");
	income +=100;

И не важно, что income не равно 500 (а лишь 300 на данный момент), этот блок также будет выполняться.

Объединение условий

Однако при необходимости можно сразу обработать несколько условий:

const income = 200;
switch(income){

	case 100 :
	case 200 :
		console.log("Доход равен 100 или 200");
		break;
	case 500 : 
		console.log("Доход равен 500");
		break;
}

В данном случае для условия, когда income равно 100 и 200, выполняются одни и те же действия.

Условие по умолчанию - default

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

const income = 700;
switch(income){

	case 100 : 
		console.log("Доход равен 100");
		break;
	case 200 : 
		console.log("Доход равен 200");
		break;
	case 500 : 
		console.log("Доход равен 500");
		break;
	default: 
        console.log("Доход неизвестной величины");
        break;
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850