gpt4 book ai didi

javascript - 为什么回调必须是函数?

转载 作者:行者123 更新时间:2023-11-28 12:13:15 24 4
gpt4 key购买 nike

我不断看到:

() => execute code

而不仅仅是

execute code 

在回调中。我没有传递任何参数,那么为什么 () => 执行代码可以工作,但执行代码却不能呢?既然函数只代表一些代码行,那么它们不是同一件事吗?我在其他语言中也看到类似的事情,例如使用 lambda 的 java

谢谢。

最佳答案

使用回调是因为需要在将来的某个不确定点调用函数(代码需要执行)。简单地执行 javascript 中的代码总是会立即执行。如果您需要执行某些异步任务然后再执行某些操作,则这没有帮助。

例如,setTimeout() 接受回调,因为它需要等待,然后然后执行某些操作:

//In  about 1500 ms setTimeout will call this ()=>{} function
setTimeout(() => {
console.log("finished")
}, 1500)

能够传递这样的函数非常灵活,因为该函数还可以接受参数和返回值,这些参数和返回值可以在调用函数时确定。如果代码不是在函数中组织的,那么这将变得更加困难或不可能。

如果我直接传入一个表达式,它会立即执行:

// console.log runs immediately, there's not way to defer it.
setTimeout( console.log("finished")
, 1000)

因此该函数不仅仅代表一些代码,它还代表一个可以调用的操作。它可以由您调用,也可以由其他函数(如 setTimeout 或特定时间的 HTTP 请求)调用。

关于javascript - 为什么回调必须是函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56204932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com