Закриття - це щось, що дозволяє вирішити різноманітні проблеми елегантним чином. Власне, в мовах програмування, де немає закриттів, створюються методи для реалізації подібних функцій.
Подумайте лише про функторів на C ++ або Runnables на Java. Вони просто методи, які дозволяють функціонувати аналогічно закриттю. Якесь «ручне закриття».
Закриття стають все більш популярними, оскільки вони інтегровані в популярні мови: Javascript зростає завдяки онлайн-програмам (наприклад, google doc), C # реалізує його, PHP впроваджує його з 5.3 та ін.
Тепер, коли закриття доступні у все більшій кількості технологій, стає зовсім очевидним, що все більше людей цікавляться ними.
Отже, що таке закриття? Це досить просто. Закриття - це функція та контекст для її виконання в межах. Цим маніпулюється як об’єкт. Чому це корисно? Це корисно для підключення власного коду до існуючого коду.
Ось дві поширені ситуації, які вимагають цього: коли діями керується інший фрагмент коду, як, наприклад, у багатопотоковому читанні з пулом потоків, або коли дія повинна бути виконана на обраній події (часто використовується в javascript для інтерфейсу користувача).