预编译[precompile]

函数声明提升
函数声明提升是一种整体提升,它会把函数声明和函数一起提升到前面
变量声明提升
变量声明提升是一种局部提升,它仅仅将变量的声明提前了,但是并没有将赋值一起提升

JS运行三部曲
1.语法解析
2.预编译
3.解释执行

预编译前奏
imply global
1.暗示全局变量,如果任何变量未经声明就赋值使用,此变量归window所有,并且成为window对象的一个属性
2.一切声明的全局变量,都是window属性
3.未经声明的全局变量可以用delete操作来删除
4.函数在执行前一刻产生一个执行期上下文,Activeaction Object对象
4.这个对象是空的,但是里面有一些看不见的隐式属性: this.window属性和arguments[]属性

预编译四步
1.创建AO对象
2.寻找形参和变量声明并当做属性名添加到AO对象中,值为undefined
3.将实参和形参相统一
4.在函数体里寻找函数声明,将函数名当做属性名,值为这个函数的函数体

function test(a,b){
	console.log(a);  // function a() {}
	function a() {};
	a = 222;
	console.log(a); // 222
	function b() {};
	console.log(b); // function b(){} 
	var b = 111;	
	var a;
}
test();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值