我不知道事件循环如何在
javascript中工作,
我使用的是node.js,但是我猜测这个问题适用于浏览器.
我使用的是node.js,但是我猜测这个问题适用于浏览器.
我有一些异步调用(让我们说setTimeout或$.ajax或fs.readFile)
一段时间后,事件循环执行回调
现在当回调正在执行时,场景背后会发生什么?
当它调用异步的东西时,它会复原它使用的堆栈吗?
在实践中,回调的内容是什么?
它是如何工作的?
编辑:谢谢,我看到..
还有一个问题,事件循环如何“记住”回调的范围?
解决方法
JavaScript使用函数范围,所有JS环境中的范围规则都相同.由于Nican提到的理解关闭对于了解您当前可用范围内的内容很重要.
基本上一个功能“记住”它所定义的环境.因此,如果您使用内联匿名函数进行回调,则可以访问所有可用于其父函数的变量以及作为参数传递给它的任何变量.
关于JavaScript的封闭和范围的一些资源:
> Functions and function scope @ MDC
> Closing The Book On JavaScript Closures
> Stuart Langridge: Secrets of JavaScript Closures,part 1 (video)
> Stuart Langridge: Secrets of JavaScript Closures,part 2 (video)
Stoyan Stefanov的书“面向对象JavaScript”在JavaScript中解释范围界定,以及lexical scoping的功能如何工作(参见第4章)非常有用.我会向任何认真对JS编程的人推荐这本书.