因为说JavaScript是单线程语言, 我被嘲笑了
那JavaScript到底是不是单线程,我们来一探究竟。
js到底是不是单线程?
虽然“ Javascript 是单线程语言”是众所周知的事实,但对于这一点总是存在一些疑问。如果 Javascript 是单线程的,它如何支持异步调用?为什么基于 javascript 运行时的 Node.js 是非阻塞的?这是我想到的一些有趣的问题。我决定在这里捕捉我的思路,将理解 Javascript 基本原理所涉及的各个点连接起来。
Q: 单线程是什么意思?
A: 只有一个线程(进程)可用于执行指令
Q: Javascript 是单线程的吗?
A: 是的,Javascript“运行时”是单线程的。它执行 javascript 程序。它维护一个单独的堆栈,在这个堆栈中,指令被推送以控制执行的顺序,然后弹出以执行。以及存储对象引用和收集垃圾的堆空间。
所以说, JavaScript是单线程的,同一时刻只能执行特定的任务, 这句话是错误的, 严格来说的话, 应该这样说, JavaScript在运行的时候, 也就是runtime是单线程的, 单线程是用来形容运行环境的, 不是用来形容这门语言的