假设我有一个可以由两个函数修改的变量:一个是通过定期调用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
是同步的?