Функция — это фрагмент кода, который не работает, пока к нему не обратятся или не вызовут. Например, функция alert() является типичной предопределенной функцией JavaScript, и потому легко выполняется любым браузером. Это блок кода, который выполняется, только когда мы побудим его действовать. В некотором смысле можно представить функцию как переменную, которая содержит логику, заключающуюся в том, что ссылка на эту переменную будет запускать весь код, хранящийся внутри нее.
Для всех функций характерен общий шаблон. Имя функции всегда сопровождается скобками (без пробела), а затем — парой фигурных скобок, содержащих относящийся к функции код. В скобках иногда указана дополнительная информация, используемая функцией и называемая аргументами.
Аргументы — это данные, которые могут влиять на поведение функции. Например, функция alert в качестве аргумента принимает строку текста, и использует эту информацию для заполнения итогового диалогового окна. Существует два типа функций: «готовые» (собственные функции JavaScript), и те, которые программист создает самостоятельно (пользовательские функции). Давайте рассмотрим оба.
Собственные функции языка JavaScript
В JavaScript существуют сотни встроенных предопределенных функций, в том числе:
- alert(), conrm() и prompt() — эти функции запускают диалоговые окна на уровне браузера.
- Date() — возвращает текущую дату и время.
- parseInt(«123») — эта функция, среди прочего, позволяет принимать строковый тип данных, содержащий числа, и превращает его в числовой тип данных.
- setTimeout( имяФункции, 5000) — строка передается в функцию как аргумент.
Будет выполнять функцию с задержкой. Функция указывается в первом аргументе, а задержка задается в миллисекундах во втором (в примере 5000 миллисекунд равно 5 секундам).
Пользовательские функции
Разумеется, программист может написать собственные функции. Чтобы создать пользовательскую функцию, введите ключевое слово function, укажите ее имя, добавьте открывающую и закрывающую скобки, а потом — открывающую и закрывающую фигурные скобки.
function name() { // Здесь будет наш код функции. }
Как и в случаях с переменными и массивами, имя функции может быть любым, но к нему применимы все те же правила синтаксиса. Если программист захочет создать функцию, просто отображающую уведомление с определенным текстом, (которых и так слишком много) она будет выглядеть примерно так:
function foo() { alert("Наша функция только что была запущена!"); // Код не запустится, пока мы не вызовем функцию 'foo()' }
Далее мы сможем вызывать эту функцию и выполнять указанный в ней код в любой позиции нашего сценария, написав следующее:
foo(); // Уведомление "Наша функция только что была запущена!"
Мы можем вызывать функцию в коде любое количество раз. Это значительно экономит время и избавляет от избыточного кодирования.
Аргументы JavaScript
Наличие функции, выполняющей один и тот же код на протяжении всего сценария, скорее всего, будет вовсе не так полезно. Мы можем «передавать аргументы» (обеспечивать данные) собственным и пользовательским функциям для того, чтобы применить логику функции к различным наборам данных в разное время.
Чтобы оставить место для аргументов, добавьте в скобки одну или несколько переменных, разделенных точкой с запятой, при определении функции. Потом, когда мы вызовем ее, все, что заключено в скобках, будет передано этой переменной при выполнении функции. Это может звучать немного непонятно, но все не так сложно, когда вы видите функцию в действии.
Например, предположим, нам необходимо создать очень простую функцию, которая создает уведомления для определенного количества элементов, находящихся в массиве. Мы уже узнали, что для получения числа элементов в массиве можно использовать .length, поэтому нам просто нужно найти способ, как измерить массив с помощью функции.
Это делается путем предоставления массива для измерения в качестве аргумента. Для этого при определении пользовательской функции мы определяем в скобках имя переменной. Затем она станет доступна в функции и будет содержать любой аргумент, который мы передадим при вызове последней.