@MrNoobCoder

Как мы передаём аргумент во вложенную функцию?

function slow(x) {
  // здесь могут быть ресурсоёмкие вычисления
  alert(`Called with ${x}`);
  return x;
}

function cachingDecorator(func) {
  let cache = new Map();

  return function(y) {
    if (cache.has(y)) {    // если кеш содержит такой x,
      return cache.get(y); // читаем из него результат
    }

    let result = func(y); // иначе, вызываем функцию

    cache.set(y, result); // и кешируем (запоминаем) результат
    return result;
  };
}

let slowNew = cachingDecorator(slow);

alert( slowNew(1) ); // slow(1) кешируем
alert( "Again: " + slowNew(1) ); // возвращаем из кеша

alert( slowNew(2) ); // slow(2) кешируем
alert( "Again: " + slowNew(2) ); // возвращаем из кеша

Мне не совсем понятно, как так получается, что цифра, которую я напишу в slowNew, будет являться аргументом "y", то есть цифра каким-то образом уходит во вложенную функцию, хотя у cachingDecorator есть всего один аргумент func, в который я уже передал функцию "slow". Каким образом JavaScript понимает, что цифра, которую я написал в качестве аргумента slowNew, является аргументом "y"? Надеюсь объяснил понятно :) И подскажите, что можно почитать на данную тему, чтобы лучше понимать, как работают аргументы функций?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
cachingDecorator(slow) вернул функцию, у которой есть аргумент "y". Далее ты эту функцию вызвал, передав значение в аргумент. Всё просто же.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы