В этом разделе будут рассмотрены операторы JavaScript. Основное внимание при этом мы уделим операторам декларирования и управления потоком вычислений. Без них не может быть написана ни одна JavaScript-программа.
Общий перечень этих операторов выглядит следующим образом (сразу оговоримся, что этот список неполный):
{...}
if ... else ...
()?
while
for
break
continue
return
{...}
Фигурные скобки определяют составной оператор JavaScript - блок . Основное назначение блока - определение тела цикла, тела условного оператора или функции.
Условный оператор применяется для ветвления программы по некоторому логическому условию. Есть два варианта синтаксиса:
if (логическое_выражение) оператор; if (логическое_выражение) оператор_1; else оператор_2;
Логическое выражение - это выражение, которое принимает значение true илиfalse. В первом варианте синтаксиса: если логическое_выражение равно true, то выполняется указанный оператор. Во втором варианте синтаксиса: еслилогическое_выражение равно true, то выполняется оператор_1, если же оно равно false оператор_2. Пример использования (об объекте navigator читай лекцию "Программируем свойства окна браузера"):
if (navigator.javaEnabled()) alert('Ваш браузер поддерживает Java');else alert('Ваш браузер НЕ поддерживает Java');
Этот оператор, называемый условным выражением, выдает одно из двух значений в зависимости от выполнения некоторого условия. Синтаксис его таков:
(логическое_выражение)? значение_1 : значение_2
Если логическое_выражение равно true, то возвращается значение_1, в противном случае значение_2. Условное выражение легко имитируется оператором if...else, однако оно позволяет сделать более компактным и легко воспринимаемым код программы. Например, следующие два фрагмента равносильны:
Оператор while задает цикл. Определяется он в общем случае следующим образом:
while (условие_продолжения_цикла) тело_цикла;
Тело цикла может быть как простым, так и составным оператором. Составной оператор, как всегда, заключается в фигурные скобки. Рекомендуется и простой оператор заключать в них, чтобы программу можно было легко модифицировать.Условие_продолжения_цикла является логическим выражением. Тело исполняется до тех пор, пока верно логическое условие. Формально, цикл whileработает следующим образом:
проверяется условие_продолжения_цикла:
если оно ложно ( false ), цикл закончен,
если же истинно ( true ), то продолжаем далее;
выполняется тело_цикла ;
переходим к пункту 1.
Такой цикл используется, когда заранее неизвестно количество итераций, например, в ожидании некоторого события. Пример:
var s='';while (s.length<6){ s=prompt('Введите строку длины не менее 6:','');}alert('Ваша строка: ' + s + '. Спасибо!');
Оператор for - это еще один оператор цикла. В общем случае он имеет вид:
for (инициализация_переменных_цикла; условие_продолжения_цикла; модификация_переменных_цикла) тело_цикла;
Тело цикла может быть как простым, так и составным оператором (составной необходимо заключать в фигурные скобки). Операторыинициализация_переменных_цикла и модификация_переменных_цикла могут состоять из нескольких простых операторов, в этом случае простые операторы должны быть разделены запятой. Условие_продолжения_цикла является логическим выражением. Цикл for работает следующим образом:
выполняется инициализация_переменных_цикла ;
проверяется условие_продолжения_цикла:
если оно ложно ( false ), цикл закончен,
если же истинно ( true ), то продолжаем далее;
выполняется тело_цикла ;
выполняется модификация_переменных_цикла ;
переходим к пункту 2.
Рассмотрим типичный пример использования этого оператора:
document.write('Кубы чисел от 1 до 100:'); for (n=1; n<=100; n++) document.write('<BR>'+n+'<sup>3</sup> = '+ Math.pow(n,3));
Здесь Math - встроенный объект, предоставляющий многочисленные математические константы и функции, а Math.pow(n,m) вычисляет степенную функцию nm. Результат работы скрипта получите самостоятельно.
Оператор break позволяет досрочно покинуть тело цикла. Возвращаясь к нашему примеру с кубами чисел, распечатаем только кубы, не превышающие5000.
Несмотря на то, что переменную n мы заставили пробегать от 1 до 100, т.е. заведомо с запасом, реально же цикл выполнится для значений n от 1 до ... получите сами!
Оператор continue позволяет перейти к следующей итерации цикла, пропустив выполнение всех нижестоящих операторов в теле цикла. Если нам нужно вывести кубы чисел от 1 до 100, превышающие 10 000, то мы можем составить такой цикл:
document.write('Кубы чисел от 1 до 100, большие 10 000:'); for (n=1; n<=100; n++){ s=Math.pow(n,3); if(s <= 10000) continue; document.write('<BR>'+n+'<sup>3</sup> = '+s);}
Проверьте самостоятельно, кубы каких чисел будут выведены скриптом. Разумеется, для большей гибкости можно использовать в циклах оба оператораbreak и continue.