基于: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);
谢谢!
最佳答案
让我们忽略这里有 jQuery 事件而不是 native DOM 事件的事实,因为这与 native DOM 事件一起重现,正如 dystroy 所示 in his comment问题。
简单地说 MDN 在这里具有误导性。一般来说,该文章可以使用技术审查。
如果我们检查 DOM Events specification本身:
Events may be dispatched either synchronously or asynchronously.
“处理下一个事件之前堆栈框架为空。”在一般情况下是不正确的。它只发生在异步事件中。
关于javascript - javascript中的事件循环模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27484037/