Зачем может понадобиться метод apply в реализации runOnce?

Метод apply в JavaScript позволяет вызвать функцию с заданным контекстом (this) и аргументами в виде массива.

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

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

Метод apply в JavaScript позволяет вызвать функцию с заданным контекстом (this) и аргументами в виде массива. В реализации runOnce — функции, которая должна выполниться только один раз — apply полезен для передачи оригинальных аргументов и контекста вызова к обёрнутой функции.

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

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

Метод apply в JavaScript позволяет вызвать функцию с заданным контекстом (this) и аргументами в виде массива. В реализации runOnce — функции, которая должна выполниться только один раз — apply полезен для передачи оригинальных аргументов и контекста вызова к обёрнутой функции.

Например, если мы хотим, чтобы runOnce возвращала функцию, которая при первом вызове вызывает исходную функцию с теми же аргументами и контекстом, а при последующих вызовах — нет, то apply позволяет сделать это универсально:

function runOnce(fn) {
  let called = false;
  let result;
  return function(...args) {
    if (!called) {
      called = true;
      result = fn.apply(this, args); // передаём контекст и аргументы
    }
    return result;
  };
}

Таким образом, apply обеспечивает корректную работу функции с любым количеством аргументов и правильным контекстом вызова.

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

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

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

Подробнее