1.javascript是单线程,基于事件循环,非阻塞IO的
特点:处理I/0的应用,不适合cpu运算密集的应用.
说明:事件循环中使用一个事件队列,在每个时间点,系统只会处理一件事情,即使电脑有多个cpu核心,也无法并行处理多个事件
事件循环
Event Loop,不管是前端还是移动端等开发,都离不开事件循环机制,它会循环监听任务,并在适当的时机取出,执行和释放任务,更新UI等操作更新ui渲染界面比较耗时,不同的渲染引擎有自己的一套渲染时机逻辑,决定要不要马上执行更新,更新ui成本比较大.
任务队列包括
闭包
闭包特点:1.在一个函数内部定义另外一个函数,并返回内部函数或者立即执行内部函数.2.在内部函数可以读取外部函数定义的局部变量.3.让局部函数的变量始终保存在内存当中.也就是说垃圾回收机制无法回收.
js执行时有两个异步队列:宏队列与微队列,优先执行微队列中的任务.每次执行完宏队列中的任务后,都会查看微队列中是否有任务.假如有任务则先执行微队列中的任务.再执行宏队列中的任务.执行顺序:微队列->宏队列->微队列->宏队列.(浏览器会先执行一个宏任务:script)
示例
执行顺序解析
执行结果
网友评论