全局与函数的预编译

这篇博客详细介绍了JavaScript中全局与函数的预编译过程。全局预编译包括创建Global Object,将变量声明为undefined和函数声明为函数体。函数预编译则涉及创建Activation Object,处理形参、var声明的变量和function声明。通过分析预编译的各个步骤,帮助读者理解预编译对代码执行的影响。
摘要由CSDN通过智能技术生成

预编译

首先是全局预编译 三步
第1步. 创建一个GO对象 Global Object
第2步. 将var关键字声明的变量当作GO对象的属性,赋值为undefined,有重名的直接覆盖
第3步. 将function关键字声明函数 当作GO对象的属性,值为函数体,重名直接覆盖。

     console.log(i);
      var i = 30;
      console.log(i);
      function i() { }
      var i = function () { }
      console.log(i);

如何分析这个全局预编译
1.首先创建GO对象
2.找到变量声明,并赋值为undefined
GO{
i:undefined
}
3.找到函数声明,并赋值对应的变量
GO{
i:function i(){}
}
4.然后执行代码
{
i:function(){}
}

第一个打印的i,经过预编译现在 i 等于 function i( ){ }
第三行,i=10, 现在GO对象的i=30。
第二个打印的i,经过改变打印出 30。
第五行,i = function( ){ },现在GO对象的i=function( ){ }。
第三个打印的i,经过改变变成 function( ){ };

函数预编译

函数执行的前一刻开始
第1步.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值