猿问

请问大神,这个为什么是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了。
随时随地看视频慕课网APP

相关分类

Java
JavaScript
我要回答