Здравствуйте!
Еще вопрос по задачке из учебника:
Создайте декоратор makeCaching(f), который берет функцию f и возвращает обертку, которая кеширует её результаты.
function f(arg) {
return Math.random()*arg; // может быть любой функцией
}
function makeCaching(f) { /* ваш код */ }
f = makeCaching(f);
var a, b;
a = f(1);
b = f(1);
alert( a == b ); // true (значение закешировано)
b = f(2);
alert( a == b ); // false, другой аргумент => другое значение
Скажите, случайно в этой строчке нет ошибки?
f = makeCaching(f);
У нас есть функция f, потом мы еще ей же присваиваем функцию makeCaching, переопределяем f. Как-то закольцованно получается.
Что-то я не могу до конца код догнать.