1.JS的执行流程?(JS的运行机制)
同步任务:在主线程上排队的任务,前一个任务执行完毕,才能执行下一个任务。
异步任务:不进入主线程,是进入任务队列,只有任务队列通知主线程,某个异步就可以开始了,任务才会进入主线程去执行。
异步任务又分为宏任务和微任务:
宏任务:setTimeout,setInterval,整体代码script
微任务:Promise.then
执行顺序:先执行微任务后执行宏任务
JS中的事件循环:
1.先判断是同步任务还是异步任务,先执行同步任务,异步任务进入事件循环中Event Table
2.异步任务在Event Table注册事件,当满足触发条件的时候,会被推入Event Queue
3.同步任务进入到主线程中执行,当主线程中空闲时,才会去Event Queue中看是否有需要执行的异步任务,如果有就推入主线程中执行。
2.页面渲染过程
字节—字符----token----节点----Dom
html—DOM
css----CSSOM
渲染树
布局
绘制
3.浏览器工作原理
1)首先在浏览器中输入url地址
2)dns服务器会根据url地址查找对应的ip地址
3)根据ip地址找到对应的服务器
4)浏览器会通过tcp握手机制跟服务器进行连接
5)但是现在大多数都基于HTTPS协议的,那么会多一道TLS握手机制
建立加密的隧道,保证加密的内容不会被篡改和监听
6)浏览器会发送https请求来获取服务器请求,返回html代码
7)http中会先获取14kb代码
8)构建DOM树
9)构建CSSOM树
10)合并DOM和CSSOM
11)布局
12)绘制
注意:重绘和回流