Что такое закрытие и обратные вызовы в JavaScript? Мне еще предстоит найти хорошее объяснение.
Что такое закрытие и обратные вызовы?
Ответ 1
Закрытие уже хорошо обработано в Stackoverflow, это всего лишь выбор: -
Как работает закрытие javascript?
Что именно означает "закрытие" в JavaScript?
можете ли вы сказать, что это правильный пример закрытия Javascript. Где места, которые мы должны рассмотреть, чтобы избежать закрытия?
Область и закрытие JavaScript
Закрытие Javascript и "этот контекст"
JavaScript - Как узнать о "закрытии" использования?
Обратные вызовы - это более простая концепция. Обратный вызов в основном там, где функция принимает другую функцию в качестве параметра. В какой-то момент во время выполнения вызываемая функция выполняет функцию, переданную как параметр, это обратный вызов. Довольно часто обратный вызов фактически происходит как асинхронное событие, и в этом случае вызываемая функция может вернуться без выполнения обратного вызова, что может произойти позже. Вот общий пример (на основе браузера): -
function fn() { alert("Hello, World"); }
window.setTimeout(fn, 5000);
Здесь функция fn
передается как обратный вызов функции setTimeout
. Установка таймаута возвращается немедленно, однако через 5 секунд выполняется функция, переданная как обратный вызов.
Закрытия и обратные вызовы
Довольно часто причина создания замыканий (случайно, случайно или преднамеренно) заключается в необходимости создания обратного вызова. Например: -
function AlertThisLater(message, timeout)
{
function fn() { alert(message); }
window.setTimeout(fn, timeout);
}
AlertThisLater("Hello, World!", 5000);
(Пожалуйста, ознакомьтесь с некоторыми связанными сообщениями, чтобы схватить затворы)
Создается замыкание, содержащее частично параметр message
, fn
выполняется через некоторое время после возврата вызова AlertThisLater
, но fn
все еще имеет доступ к исходному содержимому message
.