我想知道事件循环在javascript中是如何工作的,我使用的是node.js,但我猜同样的问题也适用于浏览器。
我有一些异步调用(比方说setTimeout、$.ajax或fs.readFile),然后事件循环执行callback。
现在,当callback被执行时,场景后面会发生什么呢?它是否恢复它在调用异步内容时使用的堆栈?
在实践中,回调所使用的上下文/这是什么?它是如何工作的呢?
编辑:谢谢,我明白了。还有一个问题,事件循环如何“记住”回调的范围?
发布于 2011-06-25 06:59:32
JavaScript使用函数作用域,在所有JS环境中,作用域规则是相同的。正如Nican提到的,理解闭包对于了解当前范围中的可用内容非常重要。
基本上,一个函数“记住”了定义它的环境。因此,如果您在回调中使用内联匿名函数,那么它将访问它的父函数可用的所有变量以及作为参数传递给它的任何变量。
有关JavaScript中的闭包和作用域的一些资源:
斯托扬·斯特凡诺夫的“面向对象的JavaScript”一书在解释JavaScript中的作用域以及函数的词汇范围如何工作方面做得很好(参见第4章)。我会向任何认真对待JS编程的人推荐这本书。
发布于 2016-07-26 07:44:43
有一个很好的工具,名为Javascript Loupe,由Philip创建,它将帮助您理解javascript的调用堆栈/事件和循环/回调是如何与每个other.Write交互的--编辑器中的一些javascript代码并尝试运行它。
https://stackoverflow.com/questions/6476219
复制相似问题