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

Назначение и применение JavaScript, общие сведения

Лекция 1: 1234 || Лекция 2 >

Комментарии в HTML и JavaScript

Несколько слов о различных видах комментариев. В программе JavaScript можно оставлять комментарии, которые игнорируются JavaScript-интерпретатором и служат как пояснения для разработчиков. Однострочные комментарии начинаются с символов //. Текст начиная с этих символов и до конца строки считается комментарием. Многострочный комментарий заключается между символами /* и */ и может простираться на несколько строк.

<SCRIPT>

 a=5;  // однострочный комментарий

/* Многострочный
   комментарий    */

</SCRIPT>

Для скрытия JavaScript-кода от интерпретации старыми браузерами, не поддерживающими JavaScript (у высокого начальства еще встречаются), весь JavaScript-код между тэгами <SCRIPT> и </SCRIPT> приходится заключать в HTML-комментарии <!-- и -->. Можно предположить, что эти комбинации символов, не являясь полноценными операторами JavaScript, могут быть неверно поняты JavaScript-интерпретатором и порождать ошибки. Однако этого не происходит, так как разработчики языка ввели соглашение: комбинация символов <!-- считается началом однострочного комментария (наряду с // ). Со второй комбинацией ( --> ) такой трюк невозможен (т.к. двойной минус имеет специальное значение в JavaScript), и ее приходится комментировать символами //, что иллюстрирует следующий пример.

<SCRIPT>
<!-- Скрываем JavaScript-код от старых браузеров

 a = 5;

// -->
</SCRIPT>

Однако в данном курсе мы не будем загромождать примеры такого рода HTML-комментариями, переложив эту обязанность на пользователя. К тому же, все реже можно встретить браузеры, которые вместо выполнения JavaScript-кода выдают его текст в окно браузера.

Указание языка сценария

Контейнер <SCRIPT> имеет необязательный атрибут LANGUAGE, указывающий язык, на котором написан содержащийся внутри контейнера скрипт. Значение атрибута не чувствительно к регистру. Если этот атрибут опущен, то его значением по умолчанию считается " JavaScript ". Поэтому все наши примеры можно записывать следующим образом:

<SCRIPT LANGUAGE="JavaScript">
...
</SCRIPT>

В качестве альтернативы атрибут LANGUAGE может принимать значения " JScript " (упоминавшаяся выше разновидность языка JavaScript, разработанная компанией Microsoft), " VBScript " или " VBS " (оба указывают на язык программирования VBScript, основанный на Visual Basic и тоже являющийся детищем Microsoft; поддерживается преимущественно браузером Internet Explorer) и другие. Кроме того, для JavaScript бывает необходимо указать версию языка, например, LANGUAGE="JavaScript1.2". Потребность в этом может возникнуть, если нужно написать разные участки кода для браузеров, поддерживающих разные версии языка.

Следует также иметь в виду, что в настоящей версии языка HTML (т.е. 4.0 и выше) атрибут LANGUAGE контейнера <SCRIPT> считается устаревшим и нерекомендуемым к использованию (deprecated). Вместо него в контейнере <SCRIPT> рекомендуется использовать атрибут TYPE. Его значениями, также не чувствительными к регистру, могут быть " text/javascript " (значение по умолчанию), " text/vbscript " и другие. Например, все наши примеры можно оформлять так:

<SCRIPT TYPE="text/javascript">
...
</SCRIPT>

Некоторые старые браузеры не понимают атрибут TYPE, поэтому можно задавать оба атрибута одновременно - LANGUAGE и TYPE. Атрибут TYPE имеет высший приоритет, т.е. если браузер распознает значение TYPE, то значение LANGUAGE игнорируется.

Поскольку в любом случае значение по умолчанию соответствует языку JavaScript, в наших примерах эти атрибуты будут опускаться.

Регистр символов

Как Вы, наверное, знаете, язык HTML является регистро-независимым . Вследствие этого, контейнер <SCRIPT> можно писать как <script>, его атрибуты - как Type, LANGuage и src, значение атрибутов, указывающих язык, - как " JavaSCRIPT " и " TEXT/JavaScript ". Разумеется, значение атрибута SRC, т.е. имя файла, следует писать точно так, как файл назван в операционной системе.

Напротив, язык же JavaScript - регистро-зависимый. Это означает, что все переменные, функции, ключевые слова и т.п. должны набираться в том же регистре, в каком они заданы в языке или в программе пользователя. Например, если Вы объявили переменную var myText='Привет', то в дальнейшем ее можно использовать только как myText, но не MyText. В этом кроется частая ошибка, которую допускают программисты на JavaScript. Она усугубляется еще и тем, что JavaScript не требует явно декларировать переменные, и встретив MyText, интерпретатор может решить, что это новая (но не объявленная) переменная.

Это касается и всех встроенных объектов, свойств и методов языка. Например, объектом является document. Вызов document.write() нельзя записать как Document.write() или document.Write(). К свойству объекта document, задающему цвет фона Web-страницы, можно обратиться только как document.bgColor, а метод этого же объекта, выдающий элемент с заданным идентификатором " id5 ", можно вызвать только как document.getElementById("id5").

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

  • внутри кода JavaScript - в этом случае регистр имеет значение. Например, чтобы при возникновении события Load вызывалась функция myFunction, мы должны написать: window.onload = myFunction. Названия обработчиков событий onload, onmouseover и т.п. в таком контексте должны быть написаны маленькими буквами;
  • как атрибут какого-либо HTML-контейнера - в этом случае регистр не важен. Например, чтобы обработчик события onLoad вызывал функцию myFunction, мы можем написать в HTML-исходнике: <BODY onLoad="myFunction()"> либо <BODY ONLOAD="myFunction()">.
Лекция 1: 1234 || Лекция 2 >
Валерий Банатин
Валерий Банатин

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>