var a=5; setTimeout(function(){ alert(a); a=666; },1000); a=66;
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
这个是异步的原因。浏览器解析js代码的时候是从上到下解析的,并且js是单线程的。
主线程执行第一句var a = 5;执行第二句
setTimeout( function () { alert(a); a = 666; }, 1000); |
的时候发现是一个异步函数就会放在队列中(等待主线程的任务都执行完毕的时候才会执行。)
主线程继续执行第三句a = 66;这时主线程的任务都执行完毕了,开始执行队列中的任务(也就是定时器那一块代码),
alert(a)的时候,这时a的值已经是66了。
添加回答
举报
0/150
提交
取消