Операторы языка
В этом разделе будут рассмотрены операторы JavaScript. Основное внимание при этом мы уделим операторам декларирования и управления потоком вычислений. Без них не может быть написана ни одна JavaScript-программа.
Общий перечень этих операторов выглядит следующим образом:
- var;
- {...};
- if;
- while;
- for;
- for ... in;
- break;
- continue;
- return.
Сразу оговоримся, что этот список неполный.
var
Оператор var служит для объявления переменной. При этом переменная может принимать значения любого из разрешенных типов данных. На практике довольно часто обходятся без явного использования var. Переменная соответствующего типа создается путем простого присваивания:
var a;
var a=10;
var a = new Array();
var a = new Image();
Все перечисленные выше примеры использования var верны и могут быть применены в JavaScript-программе. Область действия переменной определяется блоком (составным оператором), в котором используется переменная. Максимальная область действия переменной — страница.
{...}
Фигурные скобки определяют составной оператор JavaScript — блок. Они одновременно ограничивают область действия переменных, которые определены внутри этих скобок. За пределами блока переменные не видны:
{
var i=0;
}
Основное назначение блока — определение тела цикла и тела условного оператора.
if
Условный оператор применяется для ветвления программы по некоторому логическому условию. Общий синтаксис:
if (логическое выражение) оператор1; [else оператор2;]
Логическое выражение — это выражение, которое принимает значение true или false. Если оно равно true, то оператор 1 исполняется. В квадратных скобках необязательная составляющая оператора if — альтернатива основной ветви вычислений:
if (navigator.appName=="Netscape")
{
window.location.href=http://intuit.ru/netscape.htm;
}
else
{
window.location.href=http://intuit.ru/explorer.htm;
}
Примеры использования условного оператора можно найти, например, в разделе "Тип браузера".
while
Оператор while определяет цикл. Определяется он в общем случае следующим образом:
While (логическое выражение)
оператор;
Оператор, в том числе и составной, — тело цикла. Тело исполняется до тех пор, пока верно логическое условие:
while (flag==0)
{
id=setTimeout ("test();",500);
}
Обычно цикл этого типа применяют при выполнении периодических действий до некоторого события.
for
Опеатор for — это еще один оператор цикла. В общем случае он имеет вид:
for (инициализация переменных цикла; условие; модификация переменных цикла)
оператор;
Оператор в теле цикла может быть блоком. Рассмотрим типичный пример использования этого оператора:
for(i=0;i<document.links.length;i++)
{
document.write(document.links[i].href+"<BR>");
}
http://intuit.ru/help/index.html
http://intuit.ru/help/shop.html#choice
http://intuit.ru/help/payment.html
Подобные примеры разбросаны по всем разделам курса.
for ... in
Данный оператор позволяет "пробежаться" по свойствам объекта. Рассмотрим пример:
for(v in window.document)
{
document.write(v+"<BR>");
}
Все свойства текущего объекта "документ":
namespaces:[object]
lastModified:07/16/2002 21:22:53
onmousedown:null
URLUnencoded:http://intuit.ru/help/index.html
fileCreatedDate:07/16/2002
onbeforeeditfocus:null
bgColor:#ffffff
oncontextmenu:null
onrowexit:null
embeds:[object]
scripts:[object]
mimeType:HTML Document
alinkColor:#0000ff
onmousemove:null
onselectstart:null
oncontrolselect:null
body:[object]
protocol:HyperText Transfer Protocol
onkeypress:null
onrowenter:null
vlinkColor:#800080
URL:http://intuit.ru/help/index.html
onreadystatechange:null
applets:[object]
domain:intuit.ru
fileModifiedDate:07/16/2002
onmouseover:null
dir:
media:
defaultCharset:windows-1251
plugins:[object]
ondragstart:null
oncellchange:null
cookie:hotlog=1; hotlog=1; b=b
documentElement:[object]
ondatasetcomplete:null
nameProp:Web-engineering (Introduction to the JavaScript. Operators.)
referrer:http://intuit.ru/help/index.html
onrowsdelete:null
onerrorupdate:null
onselectionchange:null
ondblclick:null
onkeyup:null
location:http://intuit.ru/help/index.html
forms:[object]
title:Web-engineering (Introduction to the JavaScript. Operators.)
onrowsinserted:null
onmouseup:null
onkeydown:null
fgColor:#000080
ondatasetchanged:null
onmouseout:null
parentWindow:[object]
fileUpdatedDate:01/01/1601
onpropertychange:null
onstop:null
onhelp:null
linkColor:#0000ff
images:[object]
readyState:interactive
frames:[object]
all:[object]
onclick:null
childNodes:[object]
anchors:[object]
selection:[object]
onbeforeupdate:null
security:This type of document does not have a security certificate.
fileSize:15911
ondataavailable:null
styleSheets:[object]
activeElement:null
links:[object]
onafterupdate:null
sea001:[object]onafterupdate:null
down:[object]onafterupdate:null
Данный документ состоит из нескольких разделов. Обращение "window.document" позволяет обратиться к общему документу, а не к отдельно взятому разделу. Поэтому распечатанные свойства — это свойства всего документа.
break
Оператор break позволяет досрочно покинуть тело цикла. Распечатаем только title документа:
for(v in window.document)
if(v=="title")
{
document.write(v+":"+eval('document.'+v)+"
");
break;
}
Результат исполнения:
title:Web-engineering (Introduction to the JavaScript. Operators.).
В пример распечатки свойств объекта document мы вставили break при просмотре свойства title и получили искомый результат.
continue
Того же результата, что и при использовании break, можно было бы достичь при помощи оператора
continue:
for(v in window.document)
{
if(v!="title") continue;
document.write(v+":"+eval('document.'+v));
break;
}
Результат исполнения:
title:Web-engineering (Introduction to the JavaScript. Operators.)
return
Этот оператор позволяет пропустить часть тела цикла (от оператора до конца тела) и перейти к новой итерации. Таким образом мы просто пропускаем все свойства до title и после этого выходим из цикла. Оператор return используют для возврата значения из функции или обработчика события (см. разделы "Поле статуса", "Обмен данными"). Рассмотрим пример:
<FORM>
<INPUT TYPE=submit VALUE=Submit onClick="return false;">
</FORM>
В данном примере return используется для маскирования передачи данных на сервер.
|