JavaScript - Условный Код
Иногда блок кода JavaScript должен только быть выполнен под определенными условиями. Регулирование потока – через if
и else
блоки – позволяет Вам выполнять код, если определенные условия были соблюдены.
// Контроль потока
var foo = true;
var bar = false;
if ( bar ) {
// Этот код никогда не сработает.
console.log( "привет!" );
}
if ( bar ) {
// Этот код не будет запущен.
} else {
if ( foo ) {
// Этот код будет работать.
} else {
// Этот код сработал бы, если
// foo и bar были бы оба ложью.
}
}
В то время как фигурные скобки не требуются обязательно вокруг однострочных операторов if
, использование их постоянно, даже когда они строго не требуются, делает код значительно более читаемым.
Будьте внимательны, чтобы не определить функции с тем же самым именем несколько раз внутри отдельных блоков if/else
, поскольку результат их выполнения, возможно, будет непредвиденным.
Истина и Ложь
Чтобы успешно использовать регулирование потока, важно понимать, какие виды значений - "истинны" и какие виды значений - "ложны". Иногда, значения, которые, как кажется, должны оцениваться одним образом, в конечном счете фактически оцениваются другим.
// Значения оцениваются как истина:
"0";
"любая строка";
[]; // Пустой массив.
{}; // Пустой объект.
1; // Ненулевое число.
// Значения, которые ложны:
""; // Пустая строка.
NaN; // Переменная JavaScript "Не Число".
null;
undefined; // Осторожно -- undefined может быть переопределено!
0; // Число ноль.
Условное Присвоение Переменных с Тернарным оператором
Иногда переменная должна быть установлена в зависимости от некоторого условия. Оператор if/else
работает, но во многих случаях тернарный оператор более удобен. Тернарный оператор тестирует условие; если условие - истина, он возвращает одно значение, иначе он возвращает другое значение.
Тернарный оператор:
// Установить foo в 1, если bar - истина;
// иначе, установить foo в 0:
var foo = bar ? 1 : 0;
В то время как тернарный оператор может использоваться, не присваивая возвращаемое значение переменной, обычно это не приветствуется.
Операторы переключения
Вместо того, чтобы использовать серию блоков if/else
, иногда может быть полезно использовать оператор switch
вместо этого. Операторы switch
смотрят на значение переменной или выражения, и выполняют различные блоки кода в зависимости от значения.
Пример
switch ( foo ) {
case "bar":
alert( "значение было bar!" );
break;
case "baz":
alert( "значение было baz :(" );
break;
default:
alert( "что-то другое (не bar и не baz)" );
}
Попробуйте Сами »
Операторы переключения несколько потеряли популярность в JavaScript, потому что часто то же самое может быть выполнено, создавая объект, который имеет больше потенциала для повторного использования или тестирования. Например:
Пример
"bar": function() {
alert( "значение было bar!" );
},
"baz": function() {
alert( "значение было baz :(" );
},
"default": function() {
alert( "что-то другое (не bar и не baz)" );
}
};
// Проверка, существует ли свойство в объекте.
if ( stuffToDo[ foo ] ) {
// Этот код не будет выполнен.
stuffToDo[ foo ]();
} else {
// Этот код будет выполнен.
stuffToDo[ "default" ]();
}
Попробуйте Сами »
Объекты будут описаны более подробно в последующих статьях рубрики.