一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序。
但是,不知道大家有疑问没——就是我们在编程过程中的setTimeout(类似的还有setInterval、Ajax),不是异步执行的吗?!!
例如:
运行代码,打开chrome调试器,得如下结果
这个结果很容易理解,因为我setTimeout里的内容是在100ms后执行的嘛,当然是先输出a,再输出c,100ms后再输出setTimeout里的b嘛。
咦,那Javascript这不就不是单线程了嘛,这不就可以实现多线程了?!!
其实,不是的。setTimeout没有打破JavaScript的单线程机制,它其实还是单线程。
为什么这么说呢,那就得理解setTimeout到底是个怎么回事。
请看下面的代码,猜结果: