Замикання javascript - приклад замикань javascript функцій
Замикання в JavaScript використовуються для того, щоб приховувати значення змінних і зберігати значення функцій. Суть у тому, що при замиканні створюється одна функція, в якій задаються змінні і яка в результаті роботи повертає свою вкладену функцію. Потім в ній (в основній функції) створюється вкладена функція, в якій виконуються якісь операції зі змінними основні функції і яка повертає результат цих операцій. Далі основна функція прирівнюється до якоїсь змінної - ця змінна може викликатися скільки завгодно разів і при цьому в ній зберігатимуться та оновлюватимуться значення змінних основної функції т.к. вона "замкнута".
Створення числового буфера за допомогою замикань
Для розуміння що таке замикання в javascript розберемо приклад. Потрібно створити функцію makeBuffer, яка створює якийсь числовий буфер. Якщо цьому буферу передавати аргумент число, то функція запам'ятовує це число, та був, коли викликати функцію без аргументу, вона поверне квадрат суми цих чисел. Приклад: var buffer = makeBuffer(); buffer(1); buffer(2); buffer(3);
Якщо передати як аргумент null, то буфер повинен почиститися:
var buffer = makeBuffer(); buffer(3); buffer(2); alert(buffer()); // -> 25 buffer(null); alert(buffer()); // -> 0
Аналогічно, якщо буфер нічого не було передано раніше, то він повертає нуль:
var buffer = makeBuffer(); alert(buffer()); // -> 0
Буфер повинен зберігати в собі лише числа. Якщо передається інший тип даних, ігнорувати його. Але не забуваємо, що передавши null, можна скинути буфер.
Як бачимо,замикання в javascript використовуються для того, щобзберігати змінні у “верхній” функції, а операції з них виконувати у вкладеної, “нижньої” функції.