实例分析:
分析:
- 页面产生便创建了GO对象(Global Object)(也就是window对象)
- 第一个脚本文件加载
- 脚本加载完分析语法
- 开始编译,查找变量声明为作为GO属性,值赋undefined,查找函数声明作为GO属性,值赋函数体。
预编译
解释执行代码(直到执行调用函数test(2)语句)
执行函数test()之前,发生预编译
- 创建AO活动对象(Active Objecet)
- 查找形参和函数声明为AO属性,值赋underfined
- 实参值赋给形参
- 查找函数声明为AO属性,值赋函数体
预编译前两步:
预编译第三步:
预编译第四步:
执行test()函数时如下过程变化:
注意:
预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译,只在解释执行阶段才会进行变量初始化。
预编译(函数执行前)
- 创建AO对象
- 查找函数形参以及函数内变量声明,形参名及变量名作为AO的属性,值赋undefined
- 实参形参相统一,实参赋值给形参
- 查找函数声明,函数名作为AO的属性,值赋函数引用