|
Учебник JavaScriptСтраницы: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 Для чего, собственно, нужен JavaScript. JavaScript был разработан совместно компаниями Sun Microsystems и Netscape. За синтаксическую основу нового языка был взят язык Java, в свое время разработанный компанией Sun Microsystems. В последнее время популярность JS очень возросла в результате выхода в свет новейших браузеров поддерживающих данный язык.Некоторые используют Java Апплеты. Да, безусловно, есть очень красивые вещи. Теперь посмотрите на те сайты, которые предлагают апплеты. Вы можете заметить, что авторы таких страниц их не используют. Что касается меня, вы не найдете здесь апплетов. Даже если я случайно попадаю на страницу разрисованную ими, незамедлительно ухожу с нее. Дело в том, что встречаются апплеты не корректно написанные. Не буду конкретно называть сайты, но встречаются такие: после выхода со страницы остаются измененные системные шрифты, просто подвисает компьютер - вероятно, использован динамический сегмент данных, но не корректно работает механизм высвобождение памяти, и другие баги. Апплеты грузятся в память и остаются там до перезагрузки компьютера. А если остались глобальные переменные, измененные свойства, методы стандартных объектов? Я бы на месте разработчиков браузеров встроил предупреждение "Осторожно апплеты!" Это было отступление к тому, чтобы вы не путали совершенно разные языки: Java и JavaScript. Определимся, что из себя представляет язык JavaScript. JS - интерпретатор с элементами объектно-ориентированной модели. Хотя он и лишен возможностей создания собственных классов, но он оперирует стандартными объектами. Так как обработчик находится на компьютере пользователя, JS, будучи интерпретатором, использует методы и свойства объектов обозревателя на пользовательском компьютере. Тем, кто привык к структурному программированию, будет несколько сложно привыкнуть к объектной модели. JS имеет возможность написания пользовательских функций, имеет ряд операторов, но работает с объектами, их методами, свойствами и событиями. Также имеется иерархия наследования свойств объектов. Сложность составляет и то, что JS встраивается в HTML документ и взаимодействует с ним. В описании к языку JS, я не буду приводить синтаксиса HTML, это можно найти и в другом месте. Итак, начнем. Скрипты могут находиться в любом месте HTML-документа. Однако теги HTML нельзя помещать внутри JS-программы. JS программа помещается между тегами <script> ... </script>, исключение составляют обработчики событий. Встретив тег <script>, браузер построчно анализирует содержимое документа до тех пор, пока не будет достигнут тег </script>. После этого производится проверка скрипта на наличие ошибок и компилция JS программы в формат, пригодный для выполнения на компьютере пользователя. Главная часть JS программы может быть помещена в контейнер <head>... </head>, поскольку он считывается при загрузке HTML - документа одним из первых. Теоретически скрипт можно помещать в любом месте HTML - документа, хотя лучше это делать перед контейнером <body>... </body>, т.е. в заголовке документа. Окончательный выбор за вами. Синтаксис тега: <script language="JavaScript"> [текст программы] </script> Следует иметь в виду, что слово "JavaScript" записывается с соблюдением регистра символов. Выражения языка JavaScript. Выражение - это сочетание переменных, операторов и методов, возвращающее определенное значение. Условные выражения. Условные выражения используются для сравнения одних переменных с другими, а также с константами или значениями, возвращаемыми различными выражениями. В языке JS есть оператор сравнения ?, имеющий синтаксис: (условное выражение) ? операторы_1 : операторы_2 Если условное выражение истинно - выполнются операторы_1, в противном случае операторы_2. Можно также присваивать значения переменным. Например, оператор: type_time = (hour >= 12) ? "PM" : "AM" присваивает строковое значение "PM" переменной type_time, если значение переменной hour больше или равно 12; в противном случае присваивается "AM". Оператор ? в действительности является сокращенным вариантом оператора if . . . else. Предыдущий пример может быть записан так: if (hour >= 12) type_time="PM"; else type_time="AM"; Операции присваивания В языке JS имеется несколько вариантов присваивания:
Так, например, можно записать: nval *=10; т.е. переменна nval увеличивает значение в 10 раз. вместо: nval = nval * 10; Операции сравнения:
От выражений, имеющих знак "<" следует отказываться по возможности, так, как данный символ может иметь и другое значение в HTML-документах. Во избежание подобных казусов, когда подобное выражение может послужить случайным открытием тега HTML: if mvar <h . . . . . .bgcolor- может интерпретироваться как начало заголовка HTML. Теги HTML в JS программах недопустимы. Логические операции Для обозначения логической операции И в языке JS используют два символа амперсанта ( && ), а для обозначения логической операции ИЛИ - два символа прямой черты ( || ). Эти операции применимы только к булевым значеним. Например: bvar1 = true; bvar2 = false; bvar3 = true; можно записать выражение: bvar1 || bvar2 которое возвратит значение true, так, как для данного выражения достаточно того, чтобы значение одного из операндов было true. А вот выражение: bvar1 && bvar2 возвратит соответственно false так, как отрабатывается операция логического И. Можно записывать и более сложные выражения: if ((bvar1 && bvar2) || bvar3) { function1(); } else { function2(); } следует понимать как: "Активизировать функцию function1(), если обе переменные bvar1 и bvar2 содержат значения true, или хотя бы bvar3 содержит true, иначе вызвать функцию function2 " Для данных значений будет активизирована функция function1(), - bvar3 содержит значение true. Базовые операторы зыка JavaScript Программы на языке JS обычно состоят из программных блоков или единичных операторов. Программные блоки - это группы операторов, которые заключаются в фигурные скобки ({ и }). Каждый оператор, если он занимает единственную строку, имеет разграничивающую точку с запятой (;), обозначающую окончание оператора. Каждый оператор имеет собственный синтаксис. Синтаксис оператора - это набор правил, определяющих обязательные и допустимые для использования в данном операторе значения. Значения, присутствие которых является необязательным, при описании синтаксиса принято заключать в квадратные скобки, например [value]. При несоблюдении правил синтаксиса произойдет ошибка компиляции. Операторы комментариев и примечаний Синтаксис: // Текст комментариев /* Текст комментариев */ Соответственно первый комментарий может иметь только одну строку, второй несколько. Комментарии нужны исключительно только для пояснений или для временного исключения некоторых фрагментов программы во время отладки. Операторы циклов В языке JS имеются операторы для выполнения итераций т.е. повторения ряда операторов. Цикл For Синтаксис: for ([инициализация начального значения;] [условие;] [механизм обновления счетчика, шаг]) { программный блок } Оператор For позволяет многократно выполнять операторы в JS-программе. Оператор For может быть использован для выполнения одного или нескольких операторов. Фигурные скобки можно опустить, если тело цикла содержит только один оператор. Все параметры оператора For являются необязательными и используются для управления процессом выполнения цикла. При применении всех параметров каждую часть нужно отделять точкой с запятой (;). Пример вывода в окне браузера горизонтальных линий, причем каждая длиннее предыдущей: <html> <head> <script language ="JavaScript"> <!-- function testloop() { var String1 = '<hr align="center" width="' ; document.open(); for (var size = 5; size <= 50; size+=5) document.writeln (String1+ size+'%">'); document.close(); } //--> </script> </head> <body> <form> <input type="button" value="Test the loop" onClick="testloop()"> </form> </body> </html> В приведенном примере программа выводит в документ ряд горизонтальных линеек - HTML тегов (<HR>), - размер которых увеличивается с шагом 5 (size += 5) от 5% до 100% ширины рабочей области окна браузера. Всего образуется 20 итераций. Переменная String1 хранит строку, содержащую HTML-тег. В цикле к этой строке добавляется новое значение ширины, записанное в переменной size. Когда значение этой переменной достигает 100, цикл завершается. Фигурные скобки в данном примере не нужны, поскольку тело цикла содержит только один оператор. (Здесь и далее оговоримся, что исполняемые выражения встречающиеся внутри операторов влияющих на порядок выполнения программы, например циклов: вызовы функций, методы, обработчики событий и т.п. условимся называть операторами). HTML-документ содержит кнопку, которая активизирует функцию testloop(). Цикл while Синтаксис: while (условие) { программный блок } При помощи оператора while можно выполнять один или несколько операторов до тех пор, пока не будет удовлетворено условие. Если в теле цикла выполняется несколько операторов, их необходимо заключить в фигурные скобки. Попробуем привести пример программы, которая использует цикл while. Например нужно вывести таблицу умножения: <html> <head> <script language ="JavaScript"> function ftable(inum) { var iloop = 1; document.writeln ("ТАБЛИЦА УМНОЖЕНИЯ ДЛЯ: <b>" + inum + "</b><hr><pre>"); /* заметьте, что в параметрах функции writeln применены теги HTML - это допустимо. Теги HTML в тексте программы на JS недопустимы. Заголовок написан прописными буквами потому, что в тексте встречается буква "я" Некоторые браузеры, а точнее NN выдают ошибку сценария встретив такую строчную букву. */ while (iloop <= 10) { document.writeln(iloop + " x "+ inum + " = " + (iloop*inum)); iloop ++; } document.writeln("</pre>"); } ftable(prompt ("Введите число: ", 10)); </script> </head> </html> Таблица создается в функции ftable(). Цикл while выполняется 10 раз. Таблица выводится при помощи стандартной функции языка JS writeln(). Метод prompt() обеспечивает ввод данных с клавиатуры. В данном примере вводится число для вычисления таблицы умножения от 1 до 10. Данный пример можно было также написать и другим способом, используя цикл for: for (var iloop=1; iloop <= 10; iloop ++) { . . . . . . . } Выход из цикла - оператор break Синтаксис: break Оператор break используется для выхода из какого-либо цикла, например из цикла for или while. Выполнение цикла прекращается в той точке, в которой размещен этот оператор, а управление передается следующему оператору, находящемуся непосредственно после цикла. Рассмотрим следующую программу: <html> <script language ="JavaScript"> function btest() { var index = 1; while (index <= 10) { if (index = = 6) break; index ++; } //После отработки оператора break управление переходит сюда. } btest(); </script> </html> В этом примере переменной index присваивается значение 1, а цикл while должен выполняться до тех пор, пока значение переменной index меньше либо равно 10-ти (index <= 10). Однако оператор if проверяет выполнение условия index = = 6. Если это условие выполняется, то цикл while завершается с помощью оператора break. В результате цикл while будет всегда завершаться после первых шести итераций, а значение переменной index никогда не достигнет 10-ти. Продолжение цикла - оператор continue Синтаксис: continue; Оператор continue используется для прерывания выполнения блока операторов, которые составляют тело цикла и продолжения цикла в следующей итерации. В отличие от оператора break, оператор continue не останавливает выполнение цикла, а наоборот запускает новую итерацию. Если в цикле while идет просто запуск новой итерации, то в циклах for запускает с обновленным шагом. Определение функции Синтаксис: function functionname (arg, . . .) { блок операторов } Функция - это блок из одного или нескольких операторов. Блок выполняет определенные действия, а затем, возможно, возвращает значение. В языке JS процедуры - подпрограммы не возвращающие значений, не различаются. Все подпрограммы описываются функциями, а если в функцию или из нее не передаются параметры - то после имени функции ставятся круглые скобки без параметров. Если функция имеет несколько аргументов, они отделяются запятой. Нужно также помнить, что в языке JS внутри одной функции не может существовать другой функции. Фигурные скобки определяют тело функции. Функция не может быть выполнена до тех пор, пока не будет явного обращения к ней. Если необходимо, чтобы функция возвращала определенное значение, следует использовать необязательный оператор return, при этом указав в нем выражение, значение которого требуется возвратить. Возврат значения функциями - оператор return Синтаксис: return (value); return value; Оператор return завершает выполнение функции и возвращает значение заданного выражения. Скобки в этом операторе можно не использовать. Оператор return может отсутствовать в функции, если функция не возвращает значение. Оператор return обычно используется для возврата одного значения, однако его можно применять для возврата массива: function retarray() { var sarray = new Object(); sarray[1] = "Java"; sarray[2] = "Script"; return (sarray); } Обращение к аргументам функции при помощи массива argunents[] (не поддерживается в старых версиях браузеров) В этом массиве хранится список аргументов, передаваемых текущей функции. Так, первый элемент массива argunents[0] содержит первый аргуменнт функции, argunents[1] - второй и т.д. Общее количество аргументов хранится в свойстве arguments.length. Небольшой пример, который выводит на экран все аргументы, передаваемые функции: function showargs() { arglist = ""; for (var n=0; n <= arguments.length; n++) { arglist += n +"." + arguments[n] + "\n"; } alert(arglist); } Приведем пример, включающий функцию showargs(). Обратите внимание, что функция вызывается всего с двумя аргументами, хотя в описании функции задано три. В этом случае последний аргумент определяется как значение null. В функции showargs() создается строка аргументов, которая затем выводится на экран с помощью метода alert(). <html> <script language ="JavaScript"> <!-- function showargs(a, b, c) { arglist = ""; for (var n=0; n <= arguments.length; n++) { arglist += n +"." + arguments[n] + "\n"; } alert(arglist); } showargs("java","script") //--> </script> </html> Условные операторы - if . . . else Синтаксис: if (condition); { Программный блок1 } [ else { программный блок2 }] Оператор if . . . else - это условный оператор, который обеспечивает выполнение одного или нескольких операторов, в зависимости от того, удовлетворяются ли условия. Часть condition оператора if является выражением, при истинности которого выполняются операторы языка в первом программном блоке. Программный блок должен быть заключен в фигурные скобки, однако если используется только один оператор, можно скобки не ставить. Необязательная часть else обеспечивает выполнение операторов второго блока, в случае, если условие condition оператора if является ложным. Операторы if можно вкладывать друг в друга. Приведем пример. Ну например будем менять цвет фона в зависимости от системного времени: первая половина часа пусть будет синим, вторая - черным: <html> <head> <script language ="JavaScript"> <!-- today = new date(); minutes = today.getMinutes(); if (minutes >=0 && minutes <= 30) document.write("<body text=white bgcolor=blue> Это написано белым на синем"); else document.write("<body text=red bgcolor=black> Это написано красным на черном"); //--> </script> </body> </html> оператор ?
Синтаксис: |
© 2008 |
Сайт оптимизирован под разрешения 1024х768 и 1280х1024, нажмите F11, для более полного погружения в контент сайта |