为了账号安全,请及时绑定邮箱和手机立即绑定

请问大神,这个为什么是66

请问大神,这个为什么是66

有只小跳蛙 2022-11-20 17:13:29

var a=5; setTimeout(function(){ alert(a); a=666; },1000); a=66;

查看完整描述

1 回答

?
忽然笑

TA贡献1528条经验 获得超5个赞

这个是异步的原因。浏览器解析js代码的时候是从上到下解析的,并且js是单线程的。

主线程执行第一句var a = 5;执行第二句


setTimeout(function() {  alert(a);  a = 666;}, 1000);

的时候发现是一个异步函数就会放在队列中(等待主线程的任务都执行完毕的时候才会执行。)

主线程继续执行第三句a = 66;这时主线程的任务都执行完毕了,开始执行队列中的任务(也就是定时器那一块代码),

alert(a)的时候,这时a的值已经是66了。


查看完整回答
反对 回复 2022-11-24

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信