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

switch ( foo ) {

    case "bar":
        alert( "значение было bar!" );
        break;

    case "baz":
        alert( "значение было baz :(" );
        break;

    default:
        alert( "что-то другое (не bar и не baz)" );

}

Попробуйте Сами »

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

Пример

var stuffToDo = {

    "bar": function() {
        alert( "значение было bar!" );
    },

    "baz": function() {
        alert( "значение было baz :(" );
    },

    "default": function() {
        alert( "что-то другое (не bar и не baz)" );
    }

};

// Проверка, существует ли свойство в объекте.
if ( stuffToDo[ foo ] ) {
    // Этот код не будет выполнен.
    stuffToDo[ foo ]();

} else {
    // Этот код будет выполнен.
    stuffToDo[ "default" ]();

}

Попробуйте Сами »

Объекты будут описаны более подробно в последующих статьях рубрики.

Далее: Управление Элементами с jQuery

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)