Иллюстрированный самоучитель по созданию сайтов

Другие возможности языка JavaScript

Дополнительные операторы JavaScript

Подведем промежуточный итог знакомства с JavaScript. На самом деле, мы с вами рассмотрели не так уж мало: достаточно сказать, что мы изучили практически все операторы этого языка. Конечно, все дело в том, что их не так много: операторы организации циклов (for, while и do…while), условные операторы (if и switch) и операторы манипулирования объектами, которые мы пока не рассматривали. Этих операторов всего два: with и for…in. Оба применяются в основном для сокращения объема вводимого текста. Например, вместо того чтобы написать:

document.open();
document.write("Привет!");
document.close();

…можно использовать такую сокращенную запись:

with(document) {
    open();
    write("Привет!");
    close();
}

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

Другой оператор – for… in так же, как и оператор for, организует цикл. Но только вместо условия цикла при этом нужно указать объект, по всем свой ствам которого этот цикл и “пройдется”. Наверное, предыдущая фраза была не совсем понятна, поэтому поясним ее на примере.

Мы уже знаем о двух свойствах, позволяющих определить версию браузера – это navigator.appName и navigator.appVersion. Оба принадлежат объекту navigator. А между прочим, у этого объекта есть еще ряд интересных свойств. Чтобы их просмотреть, давайте создадим страницу, содержащую небольшой сценарий.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
  
<HEAD>
    <TITLE>Свойства Navigator</TITLE>
</HEAD>
  
<BODY>
    <SCRIPT>
        for (q in .navigator)
            document.write(q + "=" + navigator[q] + "<BR>");
    </SCRIPT>
</BODY>
  
</HTML>

Работает этот сценарий следующим образом. Переменной q поочередно присваивается имя каждого свойства объекта navigator. На экран при этом выводится (с помощью метода document.write) имя свойства (q), и, после знака равенства, значение свойства – (navigator[q]). Таким образом, можно узнать о свойствах, о существовании которых мы до этого даже не подозревали!

Вот, например, что нам покажет браузер Internet Explorer версии 5.0, если загрузить в него эту страницу:

appCodeName=Mozilla appMinorVersion=0 appName=Microsoft Internet Explorer appVersion=4.0
(compatible; MSIE 5.0; Windows 98; DigExt) cookieEnabled=true cpuClass=x86 mimeTypes=
  
onLine=true opsProfile= platform=Win32 plugins= systemLanguage=ru userAgent=Mozilla/4.0
(compatible; MSIE 5.0; Windows 98; DigExt) userLanguage=ru userProfile=

Как видите, свойств довольно много. Некоторые из них, правда, дублируют друг друга. Например, свойство appMinorVersion – это число, стоящее после точки в appVersion (номер подверсии). А значение свойства userAgent состоит из комбинации значений appCodeName и appVersion. Кстати, различные браузеры покажут нам не только различные значения свойств, но и представят различный их набор. Вот, например, результат загрузки той же страницы в браузер Netscape 6:

appCodeName=Mozilla appName=Netscape appVersion=5.0 (Windows; en-US)
language=en-US mimeTypes=[object MimeTyi " Array] platform=Windows plugins=[object PluginArray]
securityPolicy=
userAgent=Mozilla/5.0 (Windows; N; Win98; en-US; ml4) Netscape6/ 6. Obi
cookieEnabled=true

Таким образом, оператор цикла for…in можно использовать не только для сокращения времени “стучания по клавиатуре”, но и для исследования браузера!

Кстати, условный оператор if также имеет сокращенную форму записи, которую в некоторых случаях удобно применять (особенно если условие и выполняемые действия достаточно компактны). Для этого следует про сто написать условие, затем поставить знак вопроса, и после него указать действие, выполняемое в случае правильности условия. Затем, после двоеточия, можно указать действие, выполняемое в противном случае.

Например, вместо:

if (a <= 100) some function(a); else alert("Число превышает допустимое значение!");

…можно написать так:

(a <= 100) ? some function(a): alert("Число превышает допустимое значение!");

Здесь some_function() – просто какая-то функция, определенная где-то на веб-странице.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.