美文网首页jQuery源码笔记.jpg
JS预编译——AO对象、GO对象

JS预编译——AO对象、GO对象

作者: 柠檬果然酸 | 来源:发表于2020-04-15 22:39 被阅读0次

AO:函数预编译

function test(a,b){
    console.log(a);
    var c = 123;
    console.log(c);
    function a() {}; // 这个是函数声明
    console.log(b);
    var b = function c() {}; // 这个是函数表达式
    console.log(b);
}
test(1,3);

打印结果

> ƒ a() {}
> 123
> 3
> ƒ c() {}

预编译流程
1.计算机执行函数前,会创建一个AO对象
AO{}

2.将函数内所有的形参和变量声明储存到AO对象中,value为undefined
AO{ a: undefined, b: undefined, c: undefined }

3.将形参和实参进行统一
AO{ a: 1, b: 3, c: undefined }

4.将所有的函数声明的函数名作为AO对象中的key,函数整体内容作为value,存储到AO对象中
AO{ a: function a() {}, b: 3, c: undefined }

GO:全局预编译
1.生成GO对象GO{},这个GO就是window
2.将全局的变量声明储存到GO对象中,value为undefinde
3.将全局的函数声明的函数名作为GO对象中的key,函数整体内容为value储存到GO对象中

相关文章

网友评论

    本文标题:JS预编译——AO对象、GO对象

    本文链接:https://www.haomeiwen.com/subject/ooytrhtx.html