title: setTimeout的异步以及js是单线程的面试题？
desc: <div class
topic: JavaScript
content: 确实是死循环导致setTimeout不执行，也导致alert不执行。js是单线程是对的，所以会先执行whilet再alert，但这个循环体是死循环，所以永远不会执行alert。至于说为什么不执行setTimeout，是因为js的工作机制是：当线程中没有执行任何同步代码的前提下才会执行异步代码，setTimeout是异步代码，所以setTimeout只能等js空闲才会执行，但死循环是永远不会空闲的，所以setTimeout也永远不会执行。
answerer_tags: 前端小学生