javascript事件循环问题

标签 javascript browser node.js this event-loop

我想知道事件循环在 javascript 中是如何工作的, 我正在使用 node.js,但我猜同样的问题也适用于浏览器。

我有一些异步调用(比如说 setTimeout$.ajaxfs.readFile) 一段时间后,事件循环执行 callback

现在当 callback 被执行时,幕后会发生什么? 它是否恢复了它在调用异步内容时使用的堆栈?

实际上,回调所处的上下文/this 是什么? 它是如何工作的?

编辑:谢谢,我明白了.. 还有一个问题,事件循环如何“记住”回调的范围?

最佳答案

JavaScript 使用函数作用域,作用域规则在所有 JS 环境中都是相同的。正如 Nican 提到的,理解闭包对于了解当前范围内可用的内容很重要。

基本上,一个函数“记住”它被定义的环境。因此,如果您为回调使用内联匿名函数,它将可以访问其父函数可用的所有变量以及作为参数传递给它的任何内容。

关于 JavaScript 中的闭包和作用域的一些资源:

Stoyan Stefanov 的书面向对象的 JavaScript 很好地解释了 JavaScript 中的作用域以及 lexical scoping 的作用。函数的工作(见第 4 章)。我会把这本书推荐给任何认真对待 JS 编程的人。

关于javascript事件循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6476219/

相关文章:

javascript - 嵌套可调整大小的元素

html - 如何修复<div>元素,使其仅在调整浏览器窗口大小时缩放?

Node.js - 使用 mocha 测试 express 应用程序时获取 "Error: connect ECONNREFUSED"

javascript - 语法错误 :invalid o unexpeted toked

Node.js + socket.io 返回事件数据

javascript - 为什么这个 Javascript 原型(prototype)代码会失败?

javascript - jQuery 模式对话框和表单

javascript - 使用构造函数应用/调用

css - 强制 Internet Explorer 9 进入怪癖模式

java - 浏览器如何处理 cookie?