Анонімні самовиконувана функції JavaScript

29

Від автора: JavaScript дозволяє створювати, крім звичайних, також і анонімні функції, виконують важливу роль в JavaScript.

Анонімність щодня

Ви, швидше за все, вже зустрічалися з анонімними функціями. Вони входять в колбек функції.

document.getElementById(«button»).addEventListener. («click»,
function (){

})

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

var luke = function() {
// використовуй силу
}

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

Відміну від звичайних функцій

Важлива відмінність анонімних функцій в тому, що вони повинні оголошуватися до їх виклику. Можете згадати нашу першу статтю в серії. Там сказано, що звичайні функції можна оголошувати і викликати в будь-якому місці. Браузер парсити код перед його виконанням, підхоплюючи іменовані функції по дорозі. Сам факт того, що функції повинні прописуватися на початку скрипта, лише умовність і хороша практика програмування. Анонімна функція створюється в момент її запуску в скрипті, не під час парсинга, тому її не можна прописати після її виклику в коді.

Способи застосування функцій анонімних

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

(function() {
// код виконується автоматично
})();

Техніка називається самовиконувана функції. Ефект створюється порожніми дужками наприкінці функції, які говорять браузеру, що цю функцію необхідно запустити якомога швидше. Такий запис може здатися зайвою, звичайний JS також запустить функцію, коли дійде до неї в коді. Так навіщо використовувати таку дивну запис?

Головна причина – область видимості функції. Можете згадати з минулого статті, що змінна, оголошена всередині функції, може бути викликана тільки всередині цієї функції. В іншому коді ця змінна не видно. Точно так само мінлива всередині самовыполняющейся функції замикається усередині цієї функції. Таку змінну можна випадково викликати з зовнішнього коду або переписати. Така техніка акуратно інкапсулює змінні і код, ховаючи їх від глобального простору імен, щоб вони не вступили у конфлікт з іншим кодом. За такою ж схемою часто пишуться полифилы і плагіни, у вигляді самовыполняющихся функцій.

Висновок

Зрозумівши суть анонімних і самовыполняющихся функцій, ви зможете передавати функції змінних і перебудувати код за модулями. Функції такого роду можна використовувати також і для створення та повернення інших функцій. Тут мова вже заходить про замиканні, про який ми поговоримо в наступній статті.