1

假设我有一个可以由两个函数修改的变量:一个是通过定期调用setTimeout,另一个是事件处理程序:

var a = [];
function foo()
{
   var x = a.pop();
   // do something with x...
   setTimeout(function(){ foo(); }, 1);
}
//...
someElement.addEventListener("keypress", function(e){ a.push("some value"); }, true);

这段代码安全吗?事件监听器foo是在同一个线程中运行还是在不同线程中运行?如果它们在不同的线程中运行,javascript 运行时是否必须保证访问a是同步的?

4

1 回答 1

3

JavaScript 在浏览器中始终是单线程的。您的事件监听器不会有任何问题。

我将向您推荐用户Jonathon这个出色的答案

于 2013-06-24T20:52:47.000 回答