Российский государственный гуманитарный университет
Опубликован: 14.08.2003 | Доступ: свободный | Студентов: 23395 / 4440 | Оценка: 4.00 / 3.90 | Длительность: 10:03:00
Лекция 2:

Типы данных и операторы

< Лекция 1 || Лекция 2: 123 || Лекция 3 >

Операторы языка

В этом разделе будут рассмотрены операторы JavaScript. Основное внимание при этом мы уделим операторам декларирования и управления потоком вычислений. Без них не может быть написана ни одна JavaScript-программа.

Общий перечень этих операторов выглядит следующим образом (сразу оговоримся, что этот список неполный):

  • {...}
  • if ... else ...
  • ()?
  • while
  • for
  • break
  • continue
  • return

{...}

Фигурные скобки определяют составной оператор JavaScript - блок . Основное назначение блока - определение тела цикла, тела условного оператора или функции.

if ... else ...

Условный оператор применяется для ветвления программы по некоторому логическому условию. Есть два варианта синтаксиса:

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, однако оно позволяет сделать более компактным и легко воспринимаемым код программы. Например, следующие два фрагмента равносильны:

TheFinalMessage = (k>5)? 'Готово!' : 'Подождите...';

 if(k>5) TheFinalMessage = 'Готово!';
 else    TheFinalMessage = 'Подождите...';

while

Оператор while задает цикл. Определяется он в общем случае следующим образом:

while (условие_продолжения_цикла) тело_цикла;

Тело цикла может быть как простым, так и составным оператором. Составной оператор, как всегда, заключается в фигурные скобки. Рекомендуется и простой оператор заключать в них, чтобы программу можно было легко модифицировать. Условие_продолжения_цикла является логическим выражением. Тело исполняется до тех пор, пока верно логическое условие. Формально, цикл while работает следующим образом:

  1. проверяется условие_продолжения_цикла:
    • если оно ложно ( false ), цикл закончен,
    • если же истинно ( true ), то продолжаем далее;
  2. выполняется тело_цикла ;
  3. переходим к пункту 1.

Такой цикл используется, когда заранее неизвестно количество итераций, например, в ожидании некоторого события. Пример:

var s='';
while (s.length<6)
{
 s=prompt('Введите строку длины не менее 6:','');
}
alert('Ваша строка: ' + s + '. Спасибо!');

for

Оператор for - это еще один оператор цикла. В общем случае он имеет вид:

for (инициализация_переменных_цикла;
     условие_продолжения_цикла;
     модификация_переменных_цикла)  тело_цикла;

Тело цикла может быть как простым, так и составным оператором (составной необходимо заключать в фигурные скобки). Операторы инициализация_переменных_цикла и модификация_переменных_цикла могут состоять из нескольких простых операторов, в этом случае простые операторы должны быть разделены запятой. Условие_продолжения_цикла является логическим выражением. Цикл for работает следующим образом:

  1. выполняется инициализация_переменных_цикла ;
  2. проверяется условие_продолжения_цикла:
    • если оно ложно ( false ), цикл закончен,
    • если же истинно ( true ), то продолжаем далее;
  3. выполняется тело_цикла ;
  4. выполняется модификация_переменных_цикла ;
  5. переходим к пункту 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

Оператор break позволяет досрочно покинуть тело цикла. Возвращаясь к нашему примеру с кубами чисел, распечатаем только кубы, не превышающие 5000.

document.write('Кубы чисел, меньшие 5000:');

for (n=1; n<=100; n++)
{  
 s=Math.pow(n,3);
 if(s>5000) break;

 document.write('<BR>'+n+'<sup>3</sup> = '+s);
}

Несмотря на то, что переменную n мы заставили пробегать от 1 до 100, т.е. заведомо с запасом, реально же цикл выполнится для значений n от 1 до ... получите сами!

continue

Оператор 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.

return

Оператор return используют для возврата значения из функции или обработчика события. Рассмотрим пример с функцией:

function sign(n)
{ 
 if (n>0) return 1;
 if (n<0) return -1;
 return 0;
}

alert( sign(-3) );

Обратите внимание: оператор return не только указывает, какое значение должна вернуть функция, но и прекращает выполнение дальнейших операторов в теле функции.

При использовании в обработчиках событий оператор return позволяет отменить или не отменять действие по умолчанию, которое совершает браузер при возникновении данного события. Отменить его, однако, можно не для всех событий. Рассмотрим пример:

<FORM ACTION="newpage.html" METHOD=post>
<INPUT TYPE=submit VALUE="Отправить?"
onClick="alert('Не отправим!');return false;">
</FORM>

В этом примере без оператора return false пользователь увидел бы окно предупреждения "Не отправим!" и далее был бы перенаправлен на страницу newpage.html. Оператор же return false позволяет отменить отправку формы, и пользователь лишь увидит окно предупреждения.

Аналогично, чтобы отменить действие по умолчанию для параметров событий onClick, onKeyDown, onKeyPress, onMouseDown, onMouseUp, onSubmit, onReset, нужно использовать return false. Для события onMouseOver с этой же целью нужно использовать оператор return true. Для некоторых же событий, например onMouseOut, onLoad, onUnload, отменить действие по умолчанию невозможно.

< Лекция 1 || Лекция 2: 123 || Лекция 3 >
Валерий Банатин
Валерий Банатин

function f() { var i=5; k=7; } f(); alert(k);

В примере выдается результат k=7, однако, хоть переменная и не объявлена, она внутри функции, т.е. локальная и не должна быть видима, или вторая и последующие все-таки становятся глобальными?

Дамир Кантюков
Дамир Кантюков

Изучаю курс введение в JavaScript. 4 уроке есть код, где метод присвоен переменной, почему у меня не работает, браузер гугл:

<HTML><HEAD> <SCRIPT> wid = window.open('','','width=750,height=100,status=yes'); wid.document.open(); R = wid.document.write; R('<HTML><HEAD><SCRIPT>var t;<\/SCRIPT></HEAD>'); R('<BODY><H1>Новое окно</H1></BODY></HTML>'); wid.document.close(); </SCRIPT> </HEAD> <BODY> <A HREF="javascript: wid.t=window.prompt('Новое состояние:',''); wid.document.write(wid.t); wid.focus(); void(0);" >Изменим значение переменной t в новом окне</A> </BODY></HTML>