李兵老师在《浏览器工作原理与实践》中描述V8执行Js代码,使用了下面这个图片:
也就是说源代码分析完就有AST和执行上下文。
但是在《图解 Google V8》中描述V8执行Js代码,使用了下面这个图片:
这里又说源代码分析完就有AST和作用域。
那究竟哪个是正确的?
执行上下文不是在函数执行时才产生吗?为什么源码分析完就有了,求解!
###一个执行上下文主要包含三块信息:
this
变量;- 函数内部局部变量(包含形参和
argument
变量); - 作用域对象列表。
在代码被解释器执行前是无法确认this
变量的,怎么能创建执行上下文呢。
李兵的图是错的。
执行上下文只会在函数执行时产生,而不会在代码解析时产生。
更详细更准确的解答,欢迎订阅我的书籍,包括了详细的 v8 过程,执行上下文过程