为了账号安全,请及时绑定邮箱和手机立即绑定

JS中,script(整体代码)是怎么入栈的?

JS中,script(整体代码)是怎么入栈的?

慕村9548890 2019-02-27 09:09:21
在看js事件循环机制的解释时,经常看到如下说明:任务队列分为macro-task(宏任务)与micro-task(微任务),在最新标准中,它们被分别称为task与jobs。macro-task大概包括:script(整体代码), setTimeout, setInterval, setImmediate, I/O, UI rendering。micro-task大概包括: process.nextTick, Promise, Object.observe(已废弃), MutationObserver(html5新特性)而后开始解释事件循环的流程,当执行栈为空时,事件循环先从一个macro-task开始,然后执行所有的micro-task,再执行一个macro-task,balabala...那么问题来了,在第一次执行事件循环的时候,通常都会这样说事件循环从宏任务队列开始,这个时候,宏任务队列中,只有一个script(整体代码)任务。想知道script(整体代码)是怎么作为macro-task入栈的?比如说,setTimeout和ajax在浏览器中都有对应的webApi模块去处理,script(整体代码)应该是先编译成指令存在指令区,然后开始执行的吧。这个过程是怎么变成task任务,进而添加到队列里的,为啥不是直接入栈呢?求各位大神解答!文章引用:前端基础进阶(十二):深入核心,详解事件循环机制
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

"script(整体代码)应该是先编译成指令存在指令区,然后开始执行的吧"这句话有误,javascript是一门解释型的语言,它是被js引擎所边解释边执行的,没有“先编译成指令存在指令区”一说......


查看完整回答
反对 回复 2019-03-04
  • 2 回答
  • 0 关注
  • 895 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信