什么是JavaScript中的闭包和回调函数?我还没有找到一个好的解释。
什么是JavaScript中的闭包和回调函数?我还没有找到一个好的解释。
闭包在Stackoverflow上已经被很好地处理了,以下是其中的一些精选问题:
JavaScript闭包的工作原理是什么?
JavaScript中“闭包”到底指的是什么?
你能说这是Javascript闭包的正确示例吗?我们需要考虑避免闭包的情况?
JavaScript作用域和闭包
JavaScript闭包和“this”上下文
JavaScript - 如何学习“闭包”使用?
回调函数是一个更简单的概念。回调函数基本上是一个函数接受另一个函数作为参数。在执行期间,在某个时刻,被调用的函数将执行作为参数传递的函数,这就是一个回调。很多时候回调实际上发生在异步事件中,这种情况下,被调用的函数可能在没有执行回调函数的情况下返回,这可能会稍后发生。这里是一个常见(基于浏览器)的示例:
function fn() { alert("Hello, World"); }
window.setTimeout(fn, 5000);
这里将函数fn
作为setTimeout
函数的回调函数传递。 setTimeout
函数会立即返回,然后5秒钟后执行作为回调函数传递的函数。
闭包和回调函数
经常创建闭包的原因(无论是意外地还是有意地)是需要创建回调函数。例如:
function AlertThisLater(message, timeout)
{
function fn() { alert(message); }
window.setTimeout(fn, timeout);
}
AlertThisLater("Hello, World!", 5000);
(请阅读一些链接帖子以了解闭包)
闭包在一定程度上包含了message
参数,fn
在调用AlertThisLater
并返回一段时间后被执行,但是fn
仍然可以访问message
的原始内容。