Ниже приводятся наиболее общие сведения и характеристика языка JavaScript, которые могут оказаться полезными для тех, кто уже имеет опыт работы с каким-нибудь другим языком.

Отличительные особенности JavaScript:

  • Исходный программный код интерпретируется.
  • Операторы разделяются точкой с запятой. Вместе с тем, за завершенным (т. е. полным) оператором, расположенным в одной строке, разделитель можно не указывать: в этом случае переход на другую строку работает так же, как и точка с запятой.
  • Язык регистрозависимый. Начинающие частенько это упускают, вероятно оттого, что HTML, применяемый обычно с JavaScript совместно, не зависит от регистра (имена тегов и атрибутов HTML можно писать как строчными, так и прописными буквами).
  • Внутристрочный комментарий (неинтерпретируемый, игнорируемый текст) выделяется символом //, а многострочный — парой символов /* и */.
  • К данным применяется слабый (динамический) контроль типов. В опера­торах с разнотипными данными последние автоматически приводятся к требуемому типу. Типы данных могут быть примитивными и составны­ми. Примитивные типы содержат простые однородные значения, такие данные можно передавать функциям в качестве параметров по значению, а не по ссылке. Составные типы содержат разнородные данные (в том числе и составные), их передают функциям только по ссылке.
  • Язык объектно-ориентированный, однако он основан на прототипах, а не на классах. Имеются четыре типа объектов: встроенные объекты, объекты браузера (интерпретирующей системы), объекты документа и объекты пользователя (программиста).
  • Ввод-вывод в основном ограничен взаимодействием с документами и пользователями. По умолчанию предполагается, что доступ к локальной файловой системе запрещен. Однако браузеры могут предоставлять спе­циальные объекты, с помощью которых обеспечивается работа с файло­вой системой пользователя, хотя и с выдачей предупреждений об опасно­сти выполнения файловых операций.

Вставка сценариев в HTML-документ

Сценарии JavaScript активно взаимодействуют с объектами, встроенными в Web-страницу. Для этого они, собственно, и создаются. Но прежде, чем это взаимодействие станет возможным, следует внедрить код сценария в текст HTML-документа. Существует несколько способов связать HTML-документ с конкретным сценарием (скриптом), но обычно их просто размещают внутри контейнерного тега <SCRIPT>, т. е. между дескрипторами <script> и </script>.
Контейнер <SCRIPT> в этом случае будет находиться непосредственно в HTML-документе. Программный код пишут прямо в HTML-документе либо в специальных текстовых файлах, которые которые можно вызывать из главного HTML-документа. Для начала рассмотрим первый вариант. Прежде всего браузер находит тег <script> в теле веб-документа, и весь последующий текст пытается обработать как скриптовый код. И так до тех пор, пока не всиретит закрывающий тег </script>. После этого все последующие символы будут считаться HTML-текстом. Любой HTML-документ может содержать несколько «скриптовых включений», но каждое должно открываться и завершаться соответствующим тегом.
От его расположения в теле HTML-документа иногда может зависеть функционирование всей Web-страницы, но об этом будет сказано позже. Контейнерный тег <scrtpt>, объемлющий код сценария, может содержать следующие атрибуты:

  • language — указывает язык сценария; возможные значения:
    1) «JavaScript», «JScript». Однако второе значение правильно воспринимается только браузером Interne! Explorer. Для сценариев, рассчитанных на различные браузеры, следует указывать LANGUAGE = «JavaScript» или «javascript»;
    2) «VBScript», «vbs». Эти значения воспринимаются только браузером Internet Explorer.
    Пример:
    <SCRIPT TYPE = «javascript»>
    — // код сценария </SCRIPT>
    Если атрибут language не указан, то Internet Explorer подразумевает JScript. Вместе с тем, любая опечатка в значении атрибута language может привести к игнорированию браузером всего содержимого тега <SCRIPT>. Атрибут language не соответствует стандарту W3C, хотя он широко используется на практике. Вместо него рекомендуется применять атрибут TYPE.
  • type — указывает MIME-тип используемого языка. Для JavaScript следует задавать значение » text / javascript».
    Пример:
    <SCRIPT TYPE = «text/javascript»> — // код сценария
    </SCRIPT>
    В теге <script> возможно указание одновременно и атрибута language. и type. Однако настоятельно рекомендуется указывать атрибут type.
  • SRC — указывает имя или URL-адрес текстового файла, содержащего код сценария. Этот атрибут необходим в том случае, если сценарий расположен не непосредственно в HTML-документе, а в отдельном файле. Расширение файла со сценарием может быть каким угодно, но обычно используют js:
    <SCRIPT LANGUAGE = «JScript» SRC = «myscripts.js»> </SCRIPT>.
    Если сценарий располагается в отдельном файле, то в нем, разумеется, теги <SCRIPT> и </SCRIPT> не пишут. Сценарий, загруженный из внешнего файла, можно представить себе просто как его вставку в HTML-документ.

Самые старые браузеры, бывшие в ходу задолго до появления JavaScript, не распознают теги <SCRIPT> и </script> адекватно, а и обрабатывают последующий код как текстовое содержимое веб-документа. Результат , ясное дело, бывает непредсказуемый… Чтобы уменьшить шансы таких ошибок браузера, следует использовать дескрипторы комментария <! — и —>. Более новые браузеры с адекватной поддержкой JavaScript будут игнорировать эти символы, а древние браузеры лишний раз не ошибутся.
Обратите внимание на заключительные символы тега комментария, перед которыми стоят две косые черты. При их отсутствии браузер будет пытаться интерпретировать символы —> как окончание комментария HTML, а при наличии он просто их проигнорирует.
В браузерах, потенциально поддерживающих сценарии, эту функцию можно отключить. Кроме того, существуют браузеры, принципиально не поддерживающие сценарии. В данной ситуации желательно хотя бы вывести сообщение о том, что произошло. С этой целью в HTML-документе используют контейнерный тег <noscript>, в котором размещают, например, текст предупреждающего сообщения. Все браузеры, поддерживающие сценарии, проигнорируют содержимое тегов <noscript> кроме тех случаев, когда поддержка сценариев отключена. Браузеры, принципиально не поддерживающие сценарии, напротив, содержимое тега <script> (если оно заключено в теги <! —и /—>) опустят, а тега <noscript> — отобразят. Пример приведен ниже:
<HTML> <HEAD>
<ТITLЕ>Пример применения тега NOSCRIPT</TITLE>
</HEAD>
<SCRIPT TYPE=»text/JavaScript»>
<!—
alert(«Поддержка JavaScript включена»); //—>
</SCRIPT>
<NOSCRIPT>
<Н2>Ваш браузер не поддерживает JavaScript или его поддержка отключена</Н2>
</NOSCRIPT>
</HTML>
Здесь был использован метод alert (сообщение) для вывода сообщений в диалоговом окне.
Как уже отмечалось, в отдельных файлах обычно размещают библиотеки функций (определения функций), а также сценарии, использующиеся в нескольких HTML-документах одного или нескольких сайтов. Сценарий можно также писать в виде строки операторов, разделенных точкой с запятой. Такая строка, взятая в кавычки, служит в качестве значения атрибута-события: <IMG SRC=»mypicture.gif» ONCLICK = «alert (‘Привет!’) «.
Вызовы функций и их определения могут следовать в произвольном порядке. только если они расположены в одном и том же контейнере <script>. Если вы размещаете их в разных контейнерах <script>, то необходимо, чтобы определение функции предшествовало ее вызову. Аналогично, если определения функций находятся в отдельном файле, то его необходимо загрузить в HTML-документ раньше вызовов этих функций.
При попытке загрузить и выполнить неправильный вариант HTML-кода появится диалоговое окно с сообщением «Ошибка: Предполагается наличие объекта». Браузер интерпретирует теги HTML последовательно. Так, встретив выражение вызова функции myfunc ( ) в одном контейнере <script>, браузер еще не имеет в памяти определения этого объекта (функции), расположенного в другом контейнере <script>. Если же определение функции и ее вызов находятся в одном и том же контейнере <script>, то его содержимое сначала загружается в память, а затем анализируется. Когда интерпретатор встречает вызов функции, то он ищет ее определение в памяти и в случае удачи выполняет код этой функции.
Если необходимо, чтобы сценарий оказался в браузере прежде, чем загрузятся элементы HTML-документа, то его следует расположить в верхней части HTML-кода, а еще лучше в контейнере <head> в заголовке документа).