Возникает ошибка при сохранении свойства объекта в переменную, но если возвращать это свойство то все хорошо
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);
Источник: Stack Overflow на русском