JavaScript特点及执行过程

js特点:
             1.弱类型   不需要声明数据类型
             2.解释型
             语法分析-->预编译-->解释执行

 预编译
             GO(Global Object)
             1.代码在执行前的一瞬间,产生GO对象
             2.分析变量声明,变量名为GO对象的属性名,值为undefined
             3.分析函数声明,函数名作为GO对象的属性名,值为函数体
             AO(Active Object)
             1.函数运行前一瞬间  产生AO对象。
             2.分析参数 ,形参作为AO对象的属性名,实参作为AO对象的属性值。
             3.分析变量声明,变量名作为AO对象的属性名,值为undefined,遇到同名不做任何改变(以第一次调用为主)。
             4.分析函数声明,函数名作为AO对象的属性名,值为函数体,遇到同名,直接覆盖。

<script type="text/javascript">
			
			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=456;
				var b=function(){}
				console.log(a);//123 变量 遇到同名,不做任何改变
				console.log(b);//function
			}
			test(1);
			console.log("===============");
			
			function demo(e){
				function e(){}
				arguments[0]=2;
				console.log(e);//2
				if(a){
					var b=123;
					function c(){}
				}
				var c;
				a=10;
				var a;
				console.log(b);//undeined
				f=123;
				console.log(c);//undeined
				console.log(a);//10
			}
			var a;
			demo(1);
			
			
		</script>

预编译
            function fun(){
                console.log(a);//f a(){}
                if(false){
                    //var a;//预编译不会受if判读影响
                    function a(){}//function如果写在if中,提升受到兼容性的影响  undefined  不遵循w3c->function
                }
            }
            fun();

3.形参和arguements会形成映射关系
            function fun3(a,b){
                //'use strict'//严格模式   开发过程可以开启  但是线上环境是必须关掉
                arguments[0]=10;
                console.log(a);//10   use strict==>1
            }
            fun3(1);

注意:

1.预编译的过程不会受if for……只会受function影响 

2.function如果写在if中,提升会受浏览器兼容性的影响
3.形参和arguements会形成映射关系
    3.1  只有形参和实参个数统一的时候才能形成映射关系,不统一不能形成迎神
    3.2 开启了严格模式,形参和arguements不能形成映射关系

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值