Функції
Функції — це можливість створювати власні команди.
Часто буває ситуація, коли якийсь блок коду повторюється в програмі більше одного разу. Так ось, ви можете цьому блоку коду дати ім'я, і це буде називатися функцією. Потім можна буде викликати цю функцію багато разів, так само як ви викликаєте функції console.log
, alert
, prompt
і т.д.
Функція може мати параметри (ще їх називають аргументи) — їх визначають у заголовку функції, що вона приймає на вхід при виклику. Параметри можуть використовуватися всередині функції для здійснення будь-яких дій або обчислення значення, що повертається функцією.
Наприклад, функція console.log приймає параметр, який вона виводить на екран. Функція Math.min (1,2) приймає два параметри, і повертає найменше число з переданих їй.
Оголосити функцію можна за допомогою ключового слова function
, за яким слідує ім'я функції і список її аргументів, розділених комою і заключений в дужки.
Приклад функції, яка робить щось корисне:
Цей код створить функцію (команду) з назвою good
, але не викличе її. Тепер, якщо раптово нам треба вивести на екран якесь мотиваційне повідомлення, ми можемо просто сказати:
Команда return
потрібна для того, щоб функція повернула значення туди, звідки вона була викликана. Як prompt
наприклад. Або синус якогось кута в тригонометрії, теж повертає власне число.
У функції може бути кілька команд return, але комп'ютер закінчить виконання функції при зустрічі першої з них.
Якщо ж при виклику функції виконана в ній гілка коду не містила ключового слова return, то функція повертає спеціальне значення undefined
. Можете пошукати про нього в інтернеті.
Бувши один раз визначеною, функція може викликатися як завгодно багато разів з різними параметрами, тому функції допомагають не дублювати код і робити його більш гнучким.
Як аргументи у функцію можна передавати будь-які допустимі в js вирази.
Тепер з'ясуйте, чому:
Щоб перевірити себе, передбачте:
Якщо з'ясували чому так, передбачте:
... вам треба добре розуміти, як працюють функції.
Якщо ви вже пройшли масиви, то читайте наступний блок, інакше можете пропустити:
Передача масивів у функції
Як ви пам'ятаєте з теми про масиви, коли ми пишемо A = B
і при цьому B
це масив, то ми скопіюємо не масив, а тільки посилання на нього, в змінну A. Те ж саме при передачі масиву в функцію — ми передамо посилання на нього, і якщо функція змінить вміст масиву, то ... він зміниться :) Детальніше ви з цим розберетесь тільки після вступу в Ш++, для складання вступного тестування вам ця інформація не знадобиться :)
Оголошення та виклик функцій
Оголошення — це первинний опис функції. Оголошення == створення. Виклик — це коли, власне, викликаємо функцію будь-де. Виклик == використання.
Все як зі змінними, тільки для оголошення —function
замість let
Функції в функціях
JavaScript дозволяє створювати функції і в глобальному скоупі, так і всередині інших функцій. Причому функції всередині та ззовні можуть навіть мати однакові імена, і це не викликатиме помилку. Чому так — знову ж, читайте про скоупи.
Сильно заморочуватись на цьому поки не варто. Просто знайте, що така можливість є.
Ось код:
Закоментуйте по черзі оголошення bar()
— внутрішню, зовнішню та обидві разом.
Всі три варіанта запустіть і дивіться, що буде. Подумайте, чому саме так.
Додаткові матеріали
Про функції (uk.javascript.info)
Ще про функції (яваскрипт.укр)
Для вас ми записали власне відео про функції:
Вирішили залишити посилання і на це відео, можливо різні підходи допоможуть краще розібратись в темі:
Обов'язкові задачі
Увага! Тепер і серед обов'язкових задач цього розділу є задачі з Codewars. Тож, якщо ви ще не встигли — саме час розібратись. Інструкції з Codewars.
Виникли питання або труднощі? Зверніться за допомогою до Ш++.
Last updated