看这两篇文章就够了
这主要和 js 的用途有关,js 是作为浏览器的脚本语言,主要是实现用户与浏览器的交互,以及操作 dom;这决定了它只能是单线程,否则会带来很复杂的同步问题。 举个例子:如果 js 被设计了多线程,如果有一个线程要修改一个 dom 元素,另一个线程要删除这个 dom 元素,此时浏览器就会一脸茫然,不知所措。所以,为了避免复杂性,从一诞生,JavaScript 就是单线程,这已经成了这门语言的核心特征,将来也不会改变
思考及衍生问题
- 什么是线程
- 什么是进程
- JS 是单线程的吗
- 浏览器的进程,单进程还是多进程
- NodeJS 是单线程还是多线程,NodeJS 多进程你了解吗
- js 是单线程的,但是为什么要设计成单线程
- 可以在浏览器中实现多进程吗
- 任务队列
- 堆和栈