在JavaScript中,Js是单线程执行;可以理解为在一条线上执行,即同步编程,
可以这么理解,在浏览器执行代码的时候是从上到下执行,然而还是有异步编程,什么是异步编程,理解异步,最大的误区就是认为是在不同路上同时执行,其实它并不是同时执行,而是先执行主线程(称为执行栈)上面的代码,它会把比如绑定事件,或者定时器,回调函数(callback)ajax(这些都是异步编程)先放在旁边 的“任务列队当中”,等主线程 ,即执行栈当中的 代码执行完毕后再执行任务列队当中的代码。
Js里面最简单的,最容易理解的就是定时器setTimeout(function(){},num),定时器这个小宅总就是异步,我们都知道定时器后面有个参数,哪怕当这个参数是零,他还是得在任务列队里面等着,等执行栈里的代码执行完再执行,下面是一个小例子,
<script>
(()=>{
console.log(1);
setTimeout(()=>{
console.log(2);
},0)
console.log(3);
setTimeout(()=>{
console.log(4);
},0)
})()
</script>
```当我们在控制台打印出来的时候,执行顺序是
1
3
2
4
是不是很神奇,哪怕定时器参数为0,他还是会放在后面执行,定时器时间因子设置为零不是立即执行,每个浏览器都有一个自己最小的等待和反应时间(谷歌:5-6s IE:10-13),所有写零还是异步编程
难搞哦!