JavaScript代码执行原理(二)

Vo对象

每一个执行上下文都会关联一个vo(Variable Object)对象,变量和函数声明都会被添加到这个对象当中。

当全局代码被执行的时候,全局代码的上下文关联的就是GO对象了,

JS代码执行前

在JS代码前会进行js的解析阶段,这个时候我们


因为这块代码是全局代码,所以在他解析的时候会把用到的变量和函数都放在与之关联的VO也就是GO中,这个时候内存中的表现


将代码用到的变量加到Go中因为这个时候只是解析阶段还没有执行所以变量的值都是undefined还有一个foo函数,当解析到函数的时候,函数会被优先处理内存中开辟一个空间用来存放函数


这就是代码执行前内存中的表现


JS代码执行后

JS代码是从上往下执行的,下面我们就依次执行代码



var name=hello的时候 GO中的表现

下一块代码是函数,函数还没有被执行所以跳过,依次去修改Go中num1 num2 以及result 最后打印出来结果


最后一步是函数的执行,内存中的表现,下一篇文章继续说

(之所以我们可以在变量定义前就打印在函数定义的位置之前就可以调用函数,就是因为经过了一次解析阶段这些变量没被执行的时候就已经在VO中了,只不过没执行的时候没有值,这里只讨论var定义的 let const后面说到块级作用域的时候再来分析)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容