JavaScript预编译
Posted 哈娄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript预编译相关的知识,希望对你有一定的参考价值。
预编译分为两种:
- 函数预编译 (函数执行的前一刻执行)
- 全局预编译 (页面加载完成时执行)
函数执行编译步骤:
- 创建Activation Object
- 找形参和变量声明, 将变量声明和形参作为AO的属性名, 值为undefined
- 将实参和形参值统一
- 在函数体内找函数声明,将函数名作为AO对象的属性名,值赋予函数体
代码Demo:
function fn(a) {
var a = 123
function a() {}
var b = function () {}
function d() {}
}
代码编译解释:
1.创建AO对象
AO: {}
2.找形参和变量声明,作为AO的属性名,值为undefined
AO{
a: undefined,
b: undefined
}
3.将实参和形参值统一
AO:{
a: 1,
b:undefined
}
4.在函数体内找函数声明,将函数名作为AO的属性值,值赋予函数体
AO:{
a: function() {},
b:undefined,
d: function() {}
}
完成过程
AO:{
a:underfined -> 1 -> function a(){}
b:underfined
d:function d(){}
}
全局预编译三部曲
- 创建Global object
- 找形参和变量声明, 将变量声明和形参作为GO对象的属性名,值为undefined
- 在全局里找函数声明,讲函数名为GO对象属性名,值赋予函数体
以上是关于JavaScript预编译的主要内容,如果未能解决你的问题,请参考以下文章