Введение в JavaScript


Переменные


Переменные в JavaScript могут быть определены назначением или при помощи оператора var:

i=10; var i; var i=10; var id = window.open(); var a = new Array();

Как видно из примеров, переменные могут принимать самые разные значения, при этом тип переменной определяется контекстом.

Переменная является свойством окна. Например, мы можем открыть окно, определить в нем новую переменную и использовать ее:

wid = window.open("","test","width=200,height=100,statusbar"); wid.document.open(); wid.document.write("<HTML><HEAD>"); wid.document.write("<SCRIPT>var t;</SCRIPT>"); wid.document.write("</HEAD><BODY>"); wid.document.write("<CENTER>Новое окно<BR>"); wid.document.write("<FORM>"); wid.document.write("<INPUT TYPE=button VALUE='Закрыть окно' onClick=window.close();></FORM>"); wid.document.write("</CENTER></BODY></HTML>"); wid.document.close(); ... <A HREF="javascript:wid.t=window.prompt("Новое состояние:");wid.defaultStatus=t;wid.focus();void(0);>...</A>

Пример 18.1.

Существуют ли в JavaScript различные типы переменных? По всей видимости, да. При объявлении переменной тип не указывается. Тип значения определяется контекстом, поэтому можно было бы предположить, что все переменные — одного и того же типа. Однако очевидно, что присваивание переменной значения объекта окна (window.open()) или объекта потока (setTimeout()), вызывает создание в памяти совершенно разных структур.

Поставим вопрос несколько иначе. Может ли одна и та же переменная принимать значения разных типов? Для ответа на этот вопрос рассмотрим следующий пример:

var flag=0; var cid=null; function clock() { flag=1; d = new Date(); window.document.main.document.f0.fi1.value= d.getHours()+":"+d.getMinutes()+":"+d.getSeconds(); cid = setTimeout("clock();",10000); } function stop() { if(cid!=null) { clearTimeout(cid); cid=null; flag=0; } } function wo() { cid = window.open("","test","width=400,height=100"); cid.document.open(); cid.document.write("<HTML><HEAD></HEAD><BODY><CENTER>"); cid.document.write("<FORM><INPUT TYPE=button onClick='window.close();' value='Закрыть окно'></FORM></CENTER>"); cid.document.write("</BODY></HTML>"); cid.document.close(); cid.focus(); } ... <FORM NAME=f0> <INPUT NAME=fi1 SIZE=8 MAXLENGTH=8> <INPUT TYPE=button VALUE="Часы(start/stop)" onClick="if(flag==0)clock();else stop();"> <INPUT TYPE=button VALUE="Окно" onClick="wo();"> </FORM>

Пример 18.2.

Можно в любом порядке нажимать на кнопки формы, и все будет работать правильно. При этом переменная cid используется и как идентификатор потока, и как идентификатор окна. Это означает, что JavaScript все-таки поддерживает полиморфизм, т.е. существует два разных объекта с одинаковыми именами, и система в них не путается.




Начало  Назад  Вперед



Книжный магазин