javascript - 什么是闭包和回调?

标签 javascript callback closures

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

最佳答案

闭包已经在 Stackoverflow 中得到了很好的处理,这里只是一个选择:-

How does a javascript closure work?
What exactly does “closure” refer to in JavaScript?
can you say this is a right example of Javascript Closure.. Where the places we need to consider avoiding the closures??
JavaScript scope and closure
Javascript Closures and ‘this’ context
JavaScript - How do I learn about “closures” usage?

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

 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 的原始内容。

关于javascript - 什么是闭包和回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2070275/

相关文章:

JAVA:使用 if-cond 调用相同的方法,而不执行进一步的(旧)代码

javascript - useContext 未在回调中更新其值

javascript - 在 Javascript 中返回 MyClass 的 ID

javascript - 在下拉 javascript 中显示选定的选项

javascript - 使用回调时的 express.js 请求/响应对象生命周期

javascript - 将 YouTube 视频附加到 span

使用 lambda 的 C++ 回调因 bad_function_call 而失败

groovy - 关于省略 'return' 关键字以返回 Groovy 中的闭包 block 的不一致

javascript - 'lightercollective' 不是内部或外部命令,也不是可运行的程序或批处理文件

javascript - 如何在JS中选择具有类的所有元素