读书人

学习闭包的时候 接触到了语法分析树

发布时间: 2012-06-04 14:48:03 作者: rapoo

学习闭包的时候 ,接触到了语法分析树(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的运行时环境

读书人网 >JavaScript

热点推荐