JavaScript基础(预编译)

1.imply global 暗示全局变量:即任何变量,如果变量未声明即赋值,此变量就为全局对象所有

  • a=123;
  • var a = b =123;

2.一切声明的全局变量,全是Windows属性。

  • var a = 123;==>window.a=123;

预编译过程

<script type="text/javascript">
			function fn(a){
				console.log(a);//ƒ a (){}
				var a = 123;
				console.log(a);//123
				function a (){}
				console.log(a);//123
				var b = function(){}
				console.log(b)//function(){}
				function d(){}	
			}
			fn(1)
			/*预编译发生在函数执行的前一刻
				四部曲:
					1.创建AO对象(Activation Object)(执行其上下文)
					2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
						AO{
							a:undefined,
							b:undefined,
						}
					3.将实参和形参统一
						AO{
							a:1,
							b:undefined,
						}
					4.在函数体里找到函数声明,值赋予函数体
						AO{
							a:function a (){},
							b:undefined,
							d:function d (){}
						}
               */
		</script>

预编译练习

function test(a,b){
				console.log(a)//1
				c=0;
				var c;
				a=3;
				b=2;
				console.log(b);//2
				function b(){}
				function d(){}
				console.log(b);//2
			}
			test(1);
			// 1.AO{
			// 	a:undefined,
			// 	b:undefined,
			// 	c:undefined,
			// }
			// 2.AO{
			// 	a:1,
			// 	b:function b(){},
			// 	c:undefined,
			// 	d:function d(){}
			// }
			// 3.AO{
			// 	a:3,
			// 	b:2,
			// 	c:0,
			// 	d:function d(){}
			// }
function test(a,b){
				console.log(a);//f a(){}
				console.log(b);//undefined
				var b =234;
				console.log(b)//234
				a = 123;
				console.log(a)//123
				function a(){}
				var a;
				b = 234;
				var b = function(){}
				console.log(a);//123
				console.log(b);//f(){}
			}
			test(1)
			// 1.AO{
			// 	a:1,
			// 	b:undefined
			// }
			// 2.AO{
			// 	a:function a() {},
			// 	b:234
			// }
			// 3.AO{
			// 	a:123,
			// 	b:234,
			// }
			// 4.AO{
			// 	a:123,
			// 	b:function(){}
			// }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值