js预编译的步骤

我们知道JavaScript是一种解释性语言,那它运行的三大部分为:

一、语法分析(系统会把整篇代码扫描一下,看看有没有低级语法错误)
二、预编译
三、解释执行

我也是刚刚学的js,我想分享一下学到的东西,一起交流进步。

那么预编译的过程是怎么样的呢?

让我们一起来看下面的例子:

		function f(a){
			console.log(a);	//function a(){}
			console.log(b); //undefined
			var a = 10;	
			console.log(a); //10
			var b = 20;	
			console.log(b); //20
			function a(){}
			console.log(a);	//10
		}
		f(1);

首先,它会创建一个AO对象(activation object)。
AO{}
然后,找形参和变量声明,将变量和形参作为AO对象的属性名,值匀为undefined。

AO{
	a = undefined,
	b = undefined,
}

完了之后,将实参和形参相统一。

AO{
	a = 1,
	b = undefined,
}

最后,在函数体找函数声明,值为自己的函数体。

AO{
	a = function a(){},
	b = undefined,
}

预编译完了之后就可以解释执行了。

总结

1.创建AO对象
2.找形参和变量声明,将变量和形参作为AO对象的属性名,值为undefined。
3.将实参和形参相统一。
4.在函数体里找函数声明,值为函数体。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值