如何解决此函数可能是回调在这段代码中做什么?
因此,三天后,我开始了解实际上是什么回调函数,只是遇到以下代码:
const timeFuncRuntime = funcParameter => {
let t1 = 120;
funcParameter();
let t2 = 200;
return t2 - t1;
}
const addOnetoOne = () => 1 + 1;
timeFuncRuntime(addOnetoOne);
console.log(timeFuncRuntime(addOnetoOne))
仅用我三个月的JS经验(我什么都不知道),我可以在这段代码中告诉我们“ timeFuncRuntime(addOnetoOne);”。另一个函数被传递为参数“ addOnetoOne”,但是,我不明白它在这里实际做什么?在那有什么意义?
在最后一行中,当调用主函数并传递另一个函数作为参数时,该函数(可能就是所谓的回调函数)返回1 + 1 = 2,但是,它只是返回而我没有认为没有必要,还是存在?
在第一个箭头函数中,使用一个回调函数(我认为这是一个回调)声明了两个具有不同值的局部变量,那么那个回调函数在那里做什么?
解决方法
此代码似乎都没用。
- 传递的函数是纯函数,但从未使用过它的结果,因此它没有做任何有意义的事情。
- 包装器
timeFuncRuntime
将始终返回80
,这也不是很有用。
这意味着这段代码基本上等同于:
console.log(80)
只需进行额外的处理。
此代码可能试图显示对Higher Order Functions的使用,但效果不是很有效。 t2 - t1
似乎试图显示您如何编写基准测试功能,但是它们以数字进行了硬编码,从而无法达到目的。
研究map
和reduce
之类的函数,以获得更好的示例说明为什么要传递函数。
他们可能想要的是这样的东西:
const benchmark = (f) => {
let t1 = Date.now();
f();
let t2 = Date.now();
return t2 - t1;
}
然后您可以做:
let t = benchmark(() => {
// Something expensive
for(let i = 0; i < 100000; i++) {
let d = new Date()
}
});
// Prints how long it took the function to execute.
// A number around 50 for me.
console.log(t);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。