我一直在阅读 John Resig 的“JavaScript Ninja 的秘密”,它解释了 JavaScript 是单线程的。但是,我尝试对此进行测试,但不确定要从这里拿走什么:
// executing this in browser
(function () {
// throw something into event queue
setTimeout(function () {
alert("This will be called back after 1 second.");
}, 1000);
// arbitrary loop to take up some time
for (var i = 0; i < 10000; i += 1) {
console.log(i);
}
})();
也许我不完全理解单线程意味着什么,但我认为 setTimeout 回调在所有外部匿名函数完成之前不会执行。但是,在浏览器中运行它表明回调函数在 i 仍在输出到控制台时被调用。对我来说,这似乎有 2 个线程调用匿名函数占用 1 个线程,然后使用第 2 个线程进行回调。
有人可以帮我解惑吗?