js 代码执行流程

两个阶段:

1、词法分析

比如函数为
function xiaoming(age){
    console.log(age);    //function age(){},注意:并不是实参 6 !!!
    console.log(sex);    //undefined
    console.log(b);      //function b(){}
    
    var age=5;            //该语句分别在两个阶段中完成,var age在词法分析阶段,age=5在执行阶段起作用
    var sex='women';
    
    console.log(age);    //5
    console.log(sex);    //women
    console.log(b);      //function b(){}
    
    function age(){
    }
    function b(){
    }
    
    console.log(age);    //5
    console.log(sex);    //women
    console.log(b);      //function b(){}
}
xiaoming(6);    //实参在词法分析阶段被接收

    (1)函数执行前形成临时活动对象 AO {}(Active object)

    (2)函数参数分析

            2.1 有参数时把参数作为AO的一个属性,值为undefined,AO对象变为AO {age:undefined}

            2.2 接收实参,AO对象变为AO {age:6}

    (3)函数内变量声明分析,有var 声明比如 var age ,var sex,由于AO已经有age属性,所以var age没有实际效果,AO没有sex属性,所以var sex有效果,AO对象变为AO {age:6,sex:undefined}

    (4)函数内函数声明分析,如function age(){},function b(){},函数优先级比较高,会覆盖AO中同名变量属性值,此时AO对象变为AO{age:function(){},sex:undefined,b:function(){}}

2、顺序执行

转载于:https://my.oschina.net/lantianbaiyun/blog/425806

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值