一尘不染

什么是关闭和回调?

javascript

什么是JavaScript中的闭包和回调?我还没有找到很好的解释。


阅读 286

收藏
2020-05-01

共1个答案

一尘不染

回调 是一个更简单的概念。回调基本上是一个函数接受另一个函数作为参数的地方。在执行过程中的某个时刻,被调用函数将执行作为参数传递的函数,这是一个回调。回调实际上经常是作为异步事件发生的,在这种情况下,被调用的函数可能会在未执行回调的情况下返回,这可能会在以后发生。这是一个常见的示例(基于浏览器):

 function fn() { alert("Hello, World"); }
 window.setTimeout(fn, 5000);

在这里,该函数fn作为 回调传递 给该setTimeout函数。设置超时立即返回,但是5秒钟后执行了作为 回调 传递的函数。

闭包和回调

经常创建闭包(偶然,偶然或故意)的原因是需要创建回调。例如:

 function AlertThisLater(message, timeout)
 {
     function fn() { alert(message); }
     window.setTimeout(fn, timeout);
 }

 AlertThisLater("Hello, World!", 5000);

(请阅读一些链接文章以了解关闭情况)

创建了一个包含部分message参数的闭包,该闭包fn在调用AlertThisLater返回后的相当一段时间内执行,但fn仍然可以访问的原始内容message

2020-05-01