При написании кода на JavaScript существует множество способов принятия решений, основанных на определенных условиях. Два наиболее распространенных способа — это использование операторов if/else и switch. Оба служат одной и той же цели, но способ, которым они ее достигают, немного отличается. В этой статье мы рассмотрим различия между операторами if/else и switch, синтаксис и когда их следует использовать.
Операторы If/Else
Оператор if/else — это наиболее фундаментальный способ принятия решений в JavaScript. Он работает путем вычисления условия и выполнения набора инструкций, если условие истинно. Если условие равно false, выполняются инструкции внутри блока else. Вот пример:
let x = 5;
if (x > 10) {
console.log("x is greater than 10");
} else {
console.log("x is less than or equal to 10");
}
В этом примере условием является x > 10. Поскольку x не больше 10, выполняется оператор внутри блока else.
Оператор switch
Оператор switch используется для выполнения различных действий, основанных на различных условиях. Это более лаконично, чем использование нескольких операторов if/else. Вот пример:
let day = "Monday";
switch (day) {
case "Monday":
console.log("Today is Monday");
break;
case "Tuesday":
console.log("Today is Tuesday");
break;
case "Wednesday":
console.log("Today is Wednesday");
break;
default:
console.log("Today is not Monday, Tuesday or Wednesday");
}
В этом примере оператор switch вычисляет значение переменной day и выполняет соответствующий блок case. Если совпадение не найдено, выполняются инструкции внутри блока по умолчанию.
Сравнение If/Else vs Switch
Выбор между операторами if/else и switch зависит от ситуации. Если у вас есть небольшое количество условий, инструкции if/else легче читать и понимать. С другой стороны, если у вас есть большое количество условий, оператор switch является более кратким и эффективным.
Другое различие между операторами if/else и switch заключается в том, что if/else может обрабатывать сложные условия с помощью логических операторов (&&, ||). Операторы Switch могут оценивать только простые условия равенства.
Вот пример, в котором оператор switch не может быть использован:
let x = 5;
let y = 15;
if (x > 0 && y < 20) {
console.log("Both conditions are true");
} else {
console.log("At least one condition is false");
}
В этом примере мы используем оператор &&, чтобы проверить, верны ли оба условия. Оператор switch не может быть использован для оценки этого условия.
Тернарный оператор
Троичный оператор, также известный как условный оператор, представляет собой краткий способ написания оператора if-else. Требуется три операнда: условие для вычисления, выражение для возврата, если условие истинно, и выражение для возврата, если условие ложно.
Синтаксис тернарного оператора следующий:
condition ? expressionIfTrue : expressionIfFalse;
Вот пример:
var age = 18;
var message = (age >= 18) ? "You are an adult" : "You are a minor";
console.log(message); // Output: "You are an adult"
Тернарный оператор можно использовать вместо простого оператора if-else, чтобы сделать ваш код более кратким и читабельным. Вот пример, который демонстрирует это:
// Using if-else
var x = 10;
if (x > 5) {
console.log("x is greater than 5");
} else {
console.log("x is less than or equal to 5");
}
// Using ternary operator
var y = 10;
console.log(y > 5 ? "y is greater than 5" : "y is less than or equal to 5");
Оба примера приводят к одному и тому же результату, но второй более лаконичен.
Проверка условия
В JavaScript значения могут оцениваться либо как «истинные», либо как «ложные» в зависимости от того, принимают ли они значение true или false в логическом контексте.
Ложные значения в JavaScript — это значения, которые принимают значение false при приведении к логическому значению. Ложными значениями в JavaScript являются false, 0, -0, пустая строка, null, undefined и NaN.
С другой стороны, истинные значения — это все значения, которые не являются ложными. Сюда входят непустые строки, числа, отличные от 0, массивы, объекты и даже функции.
Вот несколько примеров:
if (false) {
console.log("This won't be executed");
}
if (0) {
console.log("This won't be executed");
}
if (null) {
console.log("This won't be executed");
}
if (undefined) {
console.log("This won't be executed");
}
if ("") {
console.log("This won't be executed");
}
if ("Hello") {
console.log("This will be executed");
}
if (1) {
console.log("This will be executed");
}
if ({}) {
console.log("This will be executed");
}
if ([]){
console.log("This will be executed");
}
if (function(){}){
console.log("This will be executed");
}
В приведенном выше примере первые пять операторов if оцениваются как false, потому что они используют ложные значения, в то время как остальные четыре оператора if оцениваются как true, потому что они используют истинные значения.