Answer
t.me/js_testОтвет:
let fac = function fac(n) {
return n !== 1 ? fac(n - 1) * n : n;
};
Обьяснение:
Когда мы даём название функции (function fac), перемененная fac становится локально заскоупленной. Функция fac переопределяется fac = decorator(fac) и при вызове fac(6), func является decorator(fac) и идет вызов самого себя
Код для проверки:
let fac = function fac(n) {
return n !== 1 ? fac(n - 1) * n : n;
};
function decorator(func) {
return function () {
const result = func.apply(this, arguments);
console.log(result);
return result;
};
};
fac = decorator(fac);
fac(6)