Web-конструирование |
||||||||||||||||
Содержание: HTML CSS JavaScript |
Встроенные функцииВсе функции JavaScript рекомендуется помещать в контейнер <HEAD>...</HEAD>. Тем самым вы обеспечите их гарантированную доступность при обработке HTML-документа. Создание функцийСуществует 2 способа создать функцию. Основное отличие в результате их работы - в том, что именованная функция видна везде, а анонимная - только после объявления:
Функции - объектыВ javascript функции являются полноценными объектами встроенного класса Function. Именно поэтому их можно присваивать переменным, передавать и, конечно, у них есть свойства:
Свойства функции доступны и внутри функции, так что их можно использовать как статические переменные. Например,
В начале работы каждая функция создает внутри себя переменную arguments и присваивает arguments.callee ссылку на себя. Так что arguments.callee.test - свойство func.test, т.е статическая переменная test. В примере нельзя было сделать присвоение:
так как при этом операция ++ сработала бы на локальной переменной test, а не на свойстве test объекта функции. Объект arguments также содержит все аргументы и может быть преобразован в массив (хотя им не является). Параметры функцииФункции можно запускать с любым числом параметров. Если функции передано меньше параметров, чем есть в определении, то отсутствующие считаются Следующая функция возвращает время time, необходимое на преодоление дистанции distance с равномерной скоростью speed. При первом запуске функция работает с аргументами distance=10, speed=undefined. Обычно такая ситуация, если она поддерживается функцией, предусматривает значение по умолчанию:
Оператор || в яваскрипт возвращает не true/false, а само значение (первое, которое приводится к true). Поэтому его используют для задания значений по умолчанию. В нашем вызове speed будет вычислено как undefined || 10 = 10. Поэтому результат будет 10/10 = 1. Второй запуск - стандартный. Третий запуск задает несколько дополнительных аргументов. В функции не предусмотрена работа с дополнительными аргументами, поэтому они просто игнорируются. Ну и в последнем случае аргументов вообще нет, поэтому distance = undefined, и имеем результат деления undefined/10 = NaN (Not-A-Number, произошла ошибка). Пример передачи функции по ссылкеФункцию легко можно передавать в качестве аргумента другой функции. Например,
Пример использования:
Или можно создать анонимную функцию непосредственно в вызове
Практическая работа |
|||||||||||||||
|
© 2010 Е. Яковлева E-mail: lena_ngpu@mail.ru |