谁能帮我看看下面这段JavaScript代码是怎样执行的,为什么会那样?

代码如下:
[code="JavaScript"]
setTimeout("alert('setTimeout');",0);
alert("starting");
//执行结果如下:
//starting
// setTimeout
[/code]

为什么会这样执行?

js是单线程的,由于setTimeout中的方法不在当前堆栈中,要等当前堆栈的方法执行完毕才会执行
通过延长setTimeout后程序执行时间可以观察

<!-- setTimeout("alert('setTimeout');",0); for(var i=0;i<10;i++){ alert("starting"); }