学习闭包的时候 ,接触到了语法分析树(SyntaxTree)概念,有一点不明
语法分析树(SyntaxTree)的概念是JS引擎创建了一些表,用来记录每个方法内的变量集(variables),方法集(functions)和作用域(scope)等
请问比如这个嵌套函数
var x=1
function a(){
var y=2
function b(){
var z=3
}
}
请问在没有发生任何函数调用的时候,js就已经创建了函数b的语法分析树了吗,也就是说js解析器已经知道局部变量b的存在是吗?
------解决方案--------------------
不是的,是执行a的时候才会解析function b,即创建b,且b有个[[scope]]属性会指向a的运行时环境