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
	提交
		取消
	