1) Для первой ошибки вы можете использовать Date.toDateString () , чтобы получить только часть даты (без времени) сегодняшней даты.
2) Вторая ошибка, на мой взгляд, связана с тем, что вы не учитываете, что возвращаемая функция может принимать несколько переменных аргументов. Чтобы решить эту проблему, вы можете объявить это как:
return function (...args) { ... };
А затем при вызове полученной функции используйте inputFunc(...args)
. Таким образом, вы можете перейти к следующему подходу:
const dateStamp = (inputFunc) =>
{
let todayDate = new Date();
return (...args) =>
{
return {
date: todayDate.toDateString(),
output: inputFunc(...args)
}
}
}
const stampedMultBy2 = dateStamp(n => n * 2);
console.log(stampedMultBy2(4));
console.log(stampedMultBy2(6));
const stampedMax = dateStamp((x, y) => Math.max(x, y));
console.log(stampedMax(-5, 6));
console.log(stampedMax(1, 4));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Вы можете даже сократить функцию dateStamp
, используя стрелку :
const dateStamp = (inputFunc) => (...args) =>
({date: (new Date()).toDateString(), output: inputFunc(...args)});