JS单线程理解
- 浏览器页面的渲染的是由多线程完成的
- GUI 渲染线程
- JavaScript引擎线程
- 定时触发器线程
- 事件触发线程
- 异步http请求线程
js的单线程并不是js语言的特性,而是浏览器只给js分配了一个线程
JS单线程执行的原因(为什么JS是单线程的)
JS负责处理页面交互,设计DOM节点操作,若是多线程工作则有可能存在两个线程同时操作一个DOM
一个负责修改一个负责删除,那么这个时候就需要浏览器来裁决如何生效哪个线程的执行结果
当然我们可以通过锁来解决上面的问题
但为了避免因为引入了锁而带来更大的复杂性,JS在最初就选择了单线程执行
单线程执行的JS,通过事件循环来完成异步操作
异步操作由子线程执行,子线程不进行DOM操作简单总结
JS单线程不是JS的语言特性,而是指JS的执行是单线程的