这是记录前端面试的话术集锦第四篇博文——进阶篇下
,我会不断更新该博文。❗❗❗
1. 浏览器Eventloop和Node中的有什么区别
众所周知JS
是⻔⾮阻塞单线程语⾔,因为在最初JS
就是为了和浏览器交互⽽诞⽣的。
如果JS
是⻔多线程的语⾔话,我们在多个线程中处理DOM
就可能会发⽣问题(⼀个线程中新加节点,另⼀个线程中删除节点),当然可以引⼊读写锁解决这个问题。
JS
在执⾏的过程中会产⽣执⾏环境,这些执⾏环境会被顺序的加⼊到执⾏栈中。如果遇到异步的代码,会被挂起并加⼊到Task
(有多种task
)队列中。
⼀旦执⾏栈为空,Event Loop
就会从Task
队列中,拿出需要执⾏的代码并放⼊执⾏栈中执⾏。所以本质上来说,JS
中的异步仍为同步⾏为。
console.log