Логические операторы
Логические операторы выполняют действия над логическими значениями. Все они приведены в табл. 19.5. А в табл. 19.6 и 19.7 показаны результаты выполнения этих операторов.
Таблица 19.5. Логические операторы
Оператор |
Описание |
; |
НЕ (логическая инверсия) |
&& |
И (логическое умножение) |
I I |
ИЛИ (логическое сложение) |
Таблица 19.6. Результаты выполнения операторов И и ИЛИ
Операнд 1 |
Операнд 2 |
&& (И) |
II (ИЛИ) |
true |
true |
true |
true |
true |
false |
false |
true |
false |
true |
false |
true |
false |
false |
false |
false |
Таблица 19.7. Результаты выполнения оператора НЕ
Операнд |
! (НЕ) |
Операнд |
! (НЕ) |
true |
false |
false |
true |
Основная область применения логических операторов - выражения сравнения (о них см. далее в этой главе). Приведем примеры таких выражений: а = (Ь > 0) && (с + 1 != d) ;
flag = !(status = 0);
Оператор typeof
Оператор typeof принимает в качестве операнда переменную или выражение и возвращает строку, описывающую тип данных операнда. Все значения, которые он может вернуть, перечислены в табл. 19.8.
Таблица 19.8. Значения, возвращаемые оператором typsof
Тип данных |
Возвращаемое значение |
Строковый |
"string" |
Числовой |
"number" |
Логический |
"boolean" |
Объект |
"obj ect" |
Функция |
"function" |
Клип |
"movieclip" |
null |
"null" |
undefined |
"undefined" |
Оператор typeof может использоваться, например, так:
status = typeof(somevar); Здесь мы присваиваем результат выполнения оператора typeof строковой переменной status. Впоследствии он может быть использован, например, в условном выражении.
Совместимость и преобразование типов данных
И напоследок рассмотрим еще два важных вопроса: совместимость типов данных и преобразование одного типа к другому.
Что получится, если сложить два числовых значения? Правильно - еще одно числовое значение. А если сложить число и строку? Трудно сказать. Тут Flash сталкивается с проблемой несовместимости типов данных и пытается сделать эти типы совместимыми, преобразуя один из них к другому. Сначала он пытается преобразовать строку в число и, если это удается, выполняет сложение. В случае неудачи число будет преобразовано в строку, и две полученные строки будут объединены. Например, в результате выполнения операторов var а, Ь, с, d, е, f; а = 11; Ь = "12"; с = а + Ь; d = "Flash"; е = 8; f = d + е; значение переменной ь при сложении с переменной а будет преобразовано в числовой тип; таким образом, переменная с будет содержать значение 2 3. Но так как значение переменной d не может быть преобразовано в число, значение е будет преобразовано в строку, и результат - значение f - станет равным "Flash8".
Логические величины преобразуются либо в числовые, либо в строковые, в зависимости от конкретного случая. Значение true будет преобразовано в число 1 или строку "1", а значение false - в о или "О".
Видно, что Flash изо всех сил пытается правильно выполнить даже некорректно написанные выражения. Иногда это получается, но чаще все работает не так, как планировалось, и, в конце концов, выполнение сценария прерывается в связи с обнаружением ошибки совсем в другом его месте, на абсолютно верном операторе. Поэтому лучше всего не допускать подобных казусов, оперировать только переменными совместимых типов и самим выполнять нужные преобразования типов.