TGViewer
PHP | Вопросы собесов PHP | Вопросы собесов @easy_php_ru · 2.31K subscribers
Post #2459 190
🤔 Что такое замыкание?

Это функция вместе с окружением, в котором она была создана. Замыкание позволяет функции "запомнить" переменные из внешнего контекста, даже после того, как этот контекст завершил свое выполнение. Это делает замыкания мощным инструментом для создания функций, которые могут работать с данными, доступными во время их создания.

🚩Основные особенности замыканий

🟠Доступ к внешним переменным
Функция может использовать переменные из внешнего контекста, в котором она была создана.
🟠Сохранение состояния
Замыкания могут сохранять состояние между вызовами.

🟠Инкапсуляция
Замыкания могут использоваться для создания частных данных и методов.

🚩Примеры замыканий в различных языках программирования

🟠JavaScript
В JavaScript замыкания используются очень часто. Рассмотрим простой пример:
function createCounter() {
let count = 0; // внешняя переменная

return function() { // внутренная функция
count++;
return count;
}
}

const counter = createCounter(); // создаем замыкание
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3


🟠Python
В Python замыкания также поддерживаются:
def create_counter():
count = 0

def increment():
nonlocal count
count += 1
return count

return increment

counter = create_counter()
print(counter()) # 1
print(counter()) # 2
print(counter()) # 3


🟠PHP
В PHP замыкания реализуются через анонимные функции и использование use:
function createCounter() {
$count = 0;

return function() use (&$count) {
$count++;
return $count;
};
}

$counter = createCounter();
echo $counter(); // 1
echo $counter(); // 2
echo $counter(); // 3


🚩Применение замыканий

🟠Создание фабричных функций
Замыкания могут использоваться для создания фабричных функций, которые генерируют другие функции с определенным поведением.

🟠Инкапсуляция
Замыкания позволяют скрывать переменные и методы внутри функции, предоставляя интерфейс для взаимодействия с ними.

🟠Обработка событий
В языках, таких как JavaScript, замыкания часто используются в обработчиках событий для доступа к контексту, в котором был назначен обработчик.

🟠Мемоизация
Замыкания могут использоваться для создания функций, которые запоминают результаты предыдущих вычислений и используют их для ускорения последующих вызовов.

Ставь 👍 и забирай 📚 Базу знаний
  • 👍 1
More from @easy_php_ru
  1. Oct 9, 2026🤔 Как настроить autoload через Composer? Composer предоставляет механизм автоматической з…
  2. Oct 9, 2026🤔 Какое отличие у протоколов tcp и udp? Это два основных транспортных протокола в интерне…
  3. Oct 8, 2026🤔 Есть ли какое-то различие между одинарными и двойными кавычками? - В большинстве языков…
  4. Oct 7, 2026🤔 В каких случаях используют индексы? Индексы в базах данных используются для ускорения о…
  5. Oct 7, 2026🤔 В чем преимущество фасада? Фасад (Facade) в PHP — это паттерн проектирования, который у…
  6. Oct 7, 2026🔥 Скрытые вакансии с удаленной работой для PHP разработчика, которые нигде больше не публ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →