基于:
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事件而不是本机DOM事件的事实,因为这与本机DOM事件一起重现,因为dystroy已经显示了
in his comment问题.
简单地说MDN在这里有误导性.一般来说,该文章可以使用技术审查.
如果我们检查DOM Events specification本身:
Events may be dispatched either synchronously or asynchronously.
“在处理下一个事件之前,堆栈帧是空的.”在一般情况下是不正确的.它只发生在异步事件中.