Skip to main content

3 posts tagged with "浏览器"

View All Tags

为什么 JS 要设置为单线程

JavaScript 之所以为单线程跟其用途有关,JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定 JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?

所以,为了避免复杂性,从一诞生,JavaScript 就是单线程,这已经成了这门语言的核心特征,将来也不会改变。

浏览器事件循环

浏览器事件循环#

浏览器事件循环是指 JS 引擎在解析 JS 脚本时,将同步方法压入到执行栈,而将异步方法放入事件队列中,当执行栈中的方法执行完后,浏览器前往事件队列查看是否有已完成的任务,如果有,则将其取出放入执行栈中。反复重复上述动作即叫做事件循环

答题需要跟浏览器的线程联系起来,即 JS 引擎线程、事件触发线程、定时触发器线程

更多详情请见 JavaScript 运行机制详解:再谈 Event Loop