猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
请问大神,这个为什么是66
var a=5; setTimeout(function(){ alert(a); a=666; },1000); a=66;
有只小跳蛙
浏览 85
回答 1
1回答
忽然笑
这个是异步的原因。浏览器解析js代码的时候是从上到下解析的,并且js是单线程的。主线程执行第一句var a = 5;执行第二句setTimeout(function() { alert(a); a = 666;}, 1000);的时候发现是一个异步函数就会放在队列中(等待主线程的任务都执行完毕的时候才会执行。)主线程继续执行第三句a = 66;这时主线程的任务都执行完毕了,开始执行队列中的任务(也就是定时器那一块代码),alert(a)的时候,这时a的值已经是66了。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
JavaScript
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续