Как работает замыкание? Объясни на примере реализованной функции once.

once использует замыкание для хранения признака выполнения и результата между вызовами возвращённой функции.

Короткий ответ

Что ответить на собеседовании

once использует замыкание для хранения признака выполнения и результата между вызовами возвращённой функции.

Подробный разбор

Ответ с пояснениями

once использует замыкание для хранения признака выполнения и результата между вызовами возвращённой функции.

Например, при повторе после синхронной ошибки разрешим новую попытку:

function once(fn) {
  let done = false;
  let result;
  return function (...args) {
    if (!done) {
      result = fn.apply(this, args);
      done = true;
    }
    return result;
  };
}

Каждый вызов once создаёт своё окружение. Если fn возвращает Promise, сохраняется он, включая возможный отказ; рекурсивный повторный вход в обёртку до завершения fn в этот простой контракт не входит.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее