javascript中的事件循环模型

Alj*_*jak 7 javascript

基于:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/EventLoop

在处理下一个事件之前,堆栈帧为空.那么为什么在下面的片段警报中显示1而不是0,因为警报功能应该在回调之前运行

var a=0;
var b={};

$(b).on("event", function (){
  a++;
});

$(b).trigger("event");
alert(a);
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/nxjhokL0/

谢谢!

Ben*_*aum 3

让我们忽略这里有 jQuery 事件而不是本机 DOM 事件的事实,因为这会使用本机 DOM 事件重现,正如dystroy在他对问题的评论中所显示的那样。

简单地说,MDN 这里有误导性。一般来说,该文章可以使用技术审查。

如果我们检查DOM 事件规范本身:

事件可以同步或异步调度。

“在处理下一个事件之前堆栈帧为空。”在一般情况下是不正确的。它仅发生在异步事件中。

  • 您真的不必停止 - 我完全支持改进答案,并且感谢您的帮助。事实上,我认为这里的人们做得还不够。 (2认同)