什么是JavaScript中的闭包和回调?我还没有找到很好的解释。
回调 是一个更简单的概念。回调基本上是一个函数接受另一个函数作为参数的地方。在执行过程中的某个时刻,被调用函数将执行作为参数传递的函数,这是一个回调。回调实际上经常是作为异步事件发生的,在这种情况下,被调用的函数可能会在未执行回调的情况下返回,这可能会在以后发生。这是一个常见的示例(基于浏览器):
function fn() { alert("Hello, World"); } window.setTimeout(fn, 5000);
在这里,该函数fn作为 回调传递 给该setTimeout函数。设置超时立即返回,但是5秒钟后执行了作为 回调 传递的函数。
fn
setTimeout
闭包和回调
经常创建闭包(偶然,偶然或故意)的原因是需要创建回调。例如:
function AlertThisLater(message, timeout) { function fn() { alert(message); } window.setTimeout(fn, timeout); } AlertThisLater("Hello, World!", 5000);
(请阅读一些链接文章以了解关闭情况)
创建了一个包含部分message参数的闭包,该闭包fn在调用AlertThisLater返回后的相当一段时间内执行,但fn仍然可以访问的原始内容message。
message
AlertThisLater