我有以下代码:使用Javascript - 事件侦听器的引擎盖下是如何工作的
function sayHiLater(){
var greeting = "Hi!";
setTimeout(function() {
console.log(greeting);
}, 3000);
console.log("Hello before hi");
}
sayHiLater();
我想更好地了解事件侦听器的引擎盖下是如何工作的, 所以在我上面的例子,如setTimeout的是被执行,真的发生了什么? 我知道它会创建一个新的执行上下文,但我的问题是;那执行上下文是简单地延迟了3秒,这意味着执行堆栈正在移动到其他事物,同时3秒结束它回到执行上下文,或者它只是传递给浏览器引擎某种形式的匿名函数参数引用,告诉它什么时候触发,然后马上将setTimeOut执行上下文从执行堆栈中弹出。或者我距离真正发生的事情还有很远的距离。感谢您的时间。
简单的实现可能是:将事件发布到事件队列中 - >让执行者从事件队列中拉第一个事件 - >让执行者寻找evnet回调(从一个地图) - >执行事件回调 –
我删除了我的答案,因为我看到这个问题的可能重复:http://stackoverflow.com/questions/12930272/javascript-closures-vs-anonymous-functions – ambodi