Функції javascript - визначення, виклик, параметри

У цьому розділі:

Функція - це блок коду, який визначається один раз і потім може викликатися на виконання будь-яку кількість разів.

Функції як об'єкти першого класу

  • Їх можна створювати за допомогою літералів
  • Їх можна привласнювати змінним, елементам масиву і властивостями інших об'єктів
  • Їх можна передавати в якості аргументів функцій
  • Їх можна повертати в якості значень з функцій
  • Вони можуть мати властивості, які допускається створювати і привласнювати динамічно

Визначення і виклик функції

Функція визначається за допомогою ключового слова function. за яким вказуються такі компоненти:

  • Ідентифікатор, що визначає ім'я функції. Як ім'я функції зазвичай вибирають дієслово, т. К. Функція виконує дію.
  • Пара круглих дужок навколо списку з нуля або більше ідентифікаторів, поділюваних запитом. Дані ідентифікатори називаються параметрами функції.
  • Тіло функції, що складається з пари фігурних дужок, усередині яких розташовуються інструкції. Тіло функції може бути порожнім, але фігурні дужки повинні бути вказані завжди. Інструкції, розташовані в тілі функції, виконуються при кожному виклику функції.

Синтаксис визначення функції виглядає наступним чином:

Простий приклад визначення функції:

Незважаючи на те, що наведена в прикладі функція коротка і проста, вона містить всі перераховані компоненти.

Програмний код, розташований в тілі функції, виконується не в момент визначення функції, а в момент її виклику. Для виклику функції використовується оператор виклику, який представляє з себе пару круглих дужок (). Оператор виклику вказується після імені функції, яка викликається на виконання. Він ініціює виконання самої функції. Це означає, що управління передається інструкцій розташованим в тілі функції. Після свого виконання, управління передається інструкції, наступної за викликом функції. Завершується виклик функції як і всі інструкції крапкою з комою (;):

Розглянуте нами визначення функції, в специфікації мови, називається «Function Declaration» (скорочено FD).

Параметри і аргументи

При виконанні функції, їй можуть передаватися значення, якими будуть ініційовані параметри. Значення, які передаються при виклику функції називаються аргументи.

  • Якщо при виконанні функції їй передається більше аргументів, ніж задано параметрів, "зайві" аргументи просто не присвоюються параметрам. Припустимо, є наступне визначення функції: Якщо при її виклику вказати foo (1,2,3,4,5), то аргументи 1,2 і 3 будуть присвоєні параметрам a, b і c відповідно. У той же час аргументи 4 і 5 Не будуть присвоєні жодному з параметрів даної функції.
  • Якщо функція має більше параметрів, ніж передано їй аргументів, то параметрами без відповідних аргументів присвоюється значення undefined. Так, якщо при виконанні функції foo (a, b, c) вказати foo (1), параметру a буде присвоєно значення 1, а параметрам b і c - значення undefined.

Всі функції мають два неявних параметра: arguments і this. Під словом неявний мається на увазі, що ці характеристики не перераховуються явно в сигнатурі (визначенні) функції. Ці параметри також неявно инициализируются при виконанні функції. До них можна звертатися в самій функції таким же чином, як і до будь-яким іншим явно встановленим параметрам.

параметр arguments

Параметр arguments є об'єктом, який містить всі аргументи передані функції. Він є локальним об'єктом, який доступний тільки всередині функції. Якщо спробувати отримати доступ до arguments поза функцією, буде викликана помилка.

Об'єкт arguments не відноситься до типу Array. Він схожий на масив, але не має жодних його методів і властивостей, крім length. Оскільки він схожий на масив, звернутися до переданим функції аргументів можна за допомогою індексів. Індекс першого елемента 0. Наприклад, якщо функції було передано 3 аргументу, на кожен аргумент можна послатися наступним чином:

параметр this

Цей параметр посилається на об'єкт, який неявно пов'язаний з спричиненої функцією і називається контекстом виклику функції. Те, на що вказує параметр this, визначається не тим, як функція оголошується, а тим, як вона викликається.

Інструкція return

Функція може повернути деяке значення (результат роботи функції) програмою, яка її викликала. Значення, що повертається передається в точку виклику функції.

Інструкція return всередині функції служить для визначення значення, що повертається функцією. Як повертається може бути значення будь-якого типу. Якщо в якості значення, що повертається використовується вираз, в програму повертається не сам вираз, а результат його обчислення. Інструкція return повинен виглядати так:

Для подальшого використання повертається, результат виконання функції можна присвоїти наприклад змінної:

Інструкція return може бути розташована в будь-якому місці функції. Зверніть увагу, при виконанні коду всередині функції, як тільки буде досягнута інструкція return, функція повертає значення і негайно завершує своє виконання. Код, розташований в тілі функції після інструкції return, буде проігноровано.

Усередині функції може бути використано кілька інструкцій return, наприклад якщо повертається значення залежить від деяких умов виконання:

Якщо інструкція return не зазначена або не вказано значення, що повертається, то функція поверне значення undefined.

Вибір імені функції

Ім'я функції слід вибирати за тими ж правилами що і імена для всіх інших ідентифікаторів. Єдина відмінність - це те, що в якості імені функції зазвичай вибирають дієслово, тому що функція виконує дію.

вкладені функції

Усередині вкладеної функції можна звертатися до параметрів і локальних змінних вміщає функції (зовнішньої):

Підйом визначення функції

Визначення функції неявно "піднімається" в початок сценарію або вміщає її (зовнішньої) функції, завдяки чому функцію можна викликати ще до того, як вона буде визначена.

Таким чином функції вище еквівалентні визначень функцій наведеними нижче, в яких визначення "підняті" в початок.

Схожі статті