Devs Hive
Повернутися до всіх запитань

Що таке замкнення в JS?

JuniorMiddleJavaScript
Зустрічали на інтервʼю:0 користувачів

Це напевно маст хев питання на інтервʼю, особливо для Junior i Middle розробників. Якщо вас запитали його, то ваша задача відповісти в неочікуваному ключі.

Найперше, розкажіть простими словами, що таке замкнення.

Простими словами - це здатність функції запамʼятовувати область видимості, де вона була оголошена.

Розберемо на простому прикладі:

let count = 0;

function createCounter() {
return function () {
// при спробі доступу до count, шукаємо змінну в середині функції
// в середині функції ми її не знаходимо і починаємо шукати вище
// в createCounter змінної теж нема тому ми рухаємось вище
// ми знаходимо count в глобальній області видимості і використовуємо його
count++;
return count;
};
}

const counter = createCounter();

console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

Після того як ви відповіли на питання, скажіть АЛЕ тут є нюанс.

Якщо розглядати замкнення в контексті high-load чи навіть data-intensive в Node.js проектах, то його необережне використання, може привести до Memory Leaks.

Це відбувається тому що Garbage Collector не очищає обʼєкти на які є посилання. І якщо зберігати в замкненні великі обʼєкти, цілком імовірно отримати проблеми з памʼяттю. Тому варто памʼятати про WeakMap, WeakSet, WeakRef.

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!