Answer

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)

Report Page