Javascript 创建一个接受函数并返回带有时间戳的函数

Javascript 创建一个接受函数并返回带有时间戳的函数,javascript,object,callback,arguments,key,Javascript,Object,Callback,Arguments,Key,创建一个接受函数并返回函数的函数dateStamp。返回的函数将接受传入函数接受的任何参数,并返回一个带有date键的对象,该键的值是今天的日期(不包括时间),表示为人类可读的字符串(有关转换方法,请参阅date对象),以及一个输出键,其中包含调用传入函数的结果 newObj.output = func() 我的代码如下: const日期戳=(inputFunc)=>{ let todayDate=新日期() console.log(今天) 设newObj={}; 返回函数(num){ ne

创建一个接受函数并返回函数的函数
dateStamp
。返回的函数将接受传入函数接受的任何参数,并返回一个带有
date
键的对象,该键的值是今天的日期(不包括时间),表示为人类可读的字符串(有关转换方法,请参阅date对象),以及一个
输出
键,其中包含调用传入函数的结果

newObj.output = func()
我的代码如下:

const日期戳=(inputFunc)=>{
let todayDate=新日期()
console.log(今天)
设newObj={};
返回函数(num){
newObj.date=今天日期;
newObj.output=inputFunc(num);
返回newObj;
}
}
//取消这些注释以检查您的工作!
const stampedMultBy2=日期戳(n=>n*2);
console.log(stampedMultBy2(4));//应记录:{date:(今天的日期),输出:8}
console.log(stampedMultBy2(6));//应记录:{date:(今天的日期),输出:12}
1)对于第一个错误,您可以使用仅获取今天日期的日期部分(没有时间)

2)我认为第二个错误与您没有考虑返回函数可以接受多个变量参数这一事实有关。要解决此问题,可以将其声明为:

return function (...args) { ... };
然后,在调用接收到的函数时,使用
inputFunc(…args)
。总之,您可以采用下一种方法:

const日期戳=(inputFunc)=>
{
让todayDate=新日期();
返回(…参数)=>
{
返回{
日期:todayDate.toDateString(),
输出:inputFunc(…args)
}
}
}
const stampedMultBy2=日期戳(n=>n*2);
控制台日志(stampedMultBy2(4));
控制台日志(stampedMultBy2(6));
const stampedMax=日期戳((x,y)=>Math.max(x,y));
console.log(stampedMax(-5,6));
console.log(stampedMax(1,4))
.as控制台{背景色:黑色!重要;颜色:石灰;}

.作为控制台包装{max height:100%!important;top:0;}
您的函数将num作为值。它应该以函数作为值。然后,newObj的输出字段应该是对传递给函数的函数求值的结果

newObj.output = func()
对于第一个错误,使用,即,
newObj.date=todayDate.toDateString()