Возникает ошибка при сохранении свойства объекта в переменную, но если возвращать это свойство то все хорошо

Рейтинг: 0Ответов: 1Опубликовано: 27.07.2023

let add2 = (a, b) => a + b;
let upgAdd2;

function cachingDecoratorNew(func) {
  let cache = [];
  return function wrapper(...args) {
    let hash = func(...args) + 2;
    //ошибка тут, но если не указывать свойство, то он сохраняет сам объект
    let objectInCache = cache.find((item) => item.hash === hash).value; 
    if (objectInCache) {
      console.log("Из кеша: " +objectInCache);
      // но если его вернуть .value  то все хорошо,
      // почему я не могу свойство сохранить в переменную???
      return "Из кеша: " + objectInCache;  
    }
    let result = func(...args); 
    cache.push({ hash: hash, value: result }); 
    if (cache.length > 5) {
      cache.shift();
    }
    console.log("Вычисляем: " + result);
    return "Вычисляем: " + result;
  };
}

upgAdd2 = cachingDecoratorNew(add2);
upgAdd2(1, 2);

Ответы

▲ 0

Как написал в комментариях @InDevX, можно использовать оператор опциональной последовательности:

let objectInCache = cache.find((item) => item.hash === hash)?.value;