function double(num) {
return num * 2;
}
function decorator(innerFn) {
return function (num) {
if(isNaN(num)) {
throw new TypeError('Ошибка! Не число.');
}
return innerFn(num);
};
}
const decoratedDouble = decorator(double);
alert(decoratedDouble(5));
decorator просто оборачивает переданную функцию в другую(`function (x)`) и возвращает её.
decorator(double(5))
не работает потому что ты напрямую вызываешь double, в результате в decorator передается 10(5*2), а не double.
В js есть класс
Proxy позволяющий упростить подобные действия.