StudyCode
juniorfunctions

Что такое замыкание (closure)?

Войди для отслеживания
Ответ

Замыкание — это функция, которая запоминает переменные из своей внешней области видимости даже после того, как внешняя функция завершила выполнение. Замыкание «закрывает» (closes over) переменные из окружающего контекста.

JSJavaScriptPYPython
Примеры кода:
JSJavaScript
function makeCounter() {
  let count = 0; // эта переменная "замкнута"

  return function() {
    count++;
    return count;
  };
}

const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3
PYPython
def make_counter():
    count = 0  # эта переменная "замкнута"

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

    return counter

counter = make_counter()
print(counter())  # 1
print(counter())  # 2