@wOneBvll

Не понимаю как работает код?

Изучаю javascript тут и не могу понять как работают примеры
Обьясните пожалуйста, умные дяди, откуда берется вот этот x, а точнее откуда в возвращаемую функцию передается этот x, который равен n

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

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

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

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

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

slow = cachingDecorator(slow);

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

alert( slow(2) ); // slow(2) кешируем
alert( "Again: " + slow(2) ); // возвращаем из кеша
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
@McBernar
Вы из декоратора возвращаете функцию, которая принимает х. Потом, после присвоения, вы вызываете slow и передаете туда тот самый x (1).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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