Операторы сравнения используются в логических выражениях. Перечислим их:
== — равно;
=== — строго равно;
!= — неравно;
!== — строго не равно;
< — меньше;
— больше;
<= — меньше или равно;
>= — больше или равно.
В чем отличие оператора == (равно) от оператора === (строго равно)? Дела все в том, что если используется оператор ==, интерпретатор пытается преобразовать разные типы данных к одному и лишь затем сравнивает их. Оператор ===, встретив данные разных типов, сразу возвращает false (ложь).
Кроме того, значение логического выражения можно инвертировать с помощью оператора ! таким образом:
!(m_Var1 == m_Var2)
Если переменные m_Var1 и m_Var2 равны, то возвращается значение true, но так как перед выражением стоит оператор !, выражение вернет false.
Несколько логических выражений можно объединить в одно большое с помощью следующих операторов:
Оператор ветвления мы уже использовали ранее в наших примерах, например, чтобы проверить, какая из кнопок диалогового окна нажата. Так как при нажатии кнопки ОК возвращается значение true, то можно узнать, какая кнопка нажата, используя оператор ветвления if…else (листинг 3.17).
Листинг 3.17. Проверяем какая из кнопок диалогового окна нажата
<HTML>
<HEAD>
<TITLE>Окно с сообщением</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--
if (window.confirm("Hello, world")) {
window.alert("Нажата кнопка OK");
}
else {
window.alert("Нажата кнопка Cancel");
}
//-->
</SCRIPT>
</BODY>
</HTML>
Обратите внимание, что логическое выражение не содержит операторов сравнения:
if (window.confirm("Hello world"))
Такая запись эквивалентна записи
if (window.confirm("Hello, world") == true)
Проверка на равенство выражения значению true (истина) выполняется по умолчанию.
Оператор ветвления if...else имеет следующий формат:
if (<Логическое выражение>) {
<Блок, выполняемый, если условие истинно>
}
[else {
<Блок, выполняемый, если условие ложно>
}] ; -
Для примера напишем программу (листинг 3.18), которая проверяет, является ли введенное пользователем число четным или нет. После проверки выводится соответствующее сообщение.
Листинг 3.18. Проверка числа на четность
<HTML>
<HEAD>
<TITLE>Проверка числа на четность</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--
var m_Var1;
m_Var1=window.prompt("Введите число", "");
if (m_Var1==null) {
document.write("Вы нажали Отмена");
}
else {
if ((parseInt(m_Var1))%2==0) {
document.write("Четное число");
}
else {
document.write("Нечетное число");
}
}
//-->
</SCRIPT>
</BODY>
</HTML>
Как видно из примера, один условный оператор можно вложить в другой. Кроме того, если блок состоит из одного выражения, фигурные скобки можно не указывать:
if ((parselnt(m_Varl))%2==0) document.write("Четное число"); else document.write("Нечетное число");
Более того, блока else может не быть совсем:
if ( (parselnt (m__Var1) ) %2==0) document.write ("Четное число");