js预编译

202 阅读1分钟

js运行的三步

1.语法分析 2.预编译 3.解释执行

函数体的预编译


1、创建AO对象 Activation Object(执行期上下文)

2、找形参和变量声明,将变量和形参名作为AO属性名,值为undefined

3、将实参和形参统一

4、在函数体里面找到函数声明,值赋予函数体

全局预编译创建GO对象


函数声明整体提升

将函数声明提到逻辑的最前面,调用函数无论在上面调用还是在下面调用实际上都是在下面调用。

变量 声明提升

将变量的声明(不包括赋的值)提升到上面。

imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。

一切声明的全局变量,全是window的属性

window是全局的域