一、全局预编译
1.创建GO对象(global object其实就是window),是全局的执行期上下文
2、找变量声明,作为GO对象的属性名,值为undefined
3、找函数声明,将函数名作为属性名创建属性,将函数内容作为字符串存为属性的值。
注意:函数的声明只是将内容作为字符串存起来,其内容不运行
二、函数预编译过程
1、创建AO对象(activation object),是作用域的一部分,也叫做折行期上下文。
2、找形参和变量声明,作为AO对象的属性名,值为undefined。
3、将实参和形参统一,即将实参赋给形参
4、找函数体声明,将函数名作为属性名字,函数内容作为字符串存为属性的值。
注意,函数预编译只发生在其被执行的过程,若函数只是声明,则其只是作为字符串存着,只有执行时里面的语句才会有用。
练习和示例
js原文: |
预编译过程: |
运行结果:
ƒ a(){}
undefined
3
ƒ b(){}
200
200