js学习-预编译

预编译做了哪些事情?

1.创建ao对象(js的变量对象,供js引擎自己去访问)
2.找形参和变量的声明,作为ao对象的属性名,值为undefined
3.实参和形参相统一
4.找函数声明,会覆盖名字一样的变量声明
下面是一个例子:

function fn(a, c) {
            console.log(a)// function a() { }
            var a = 123
            console.log(a)// 123
            console.log(c)// function c() {}
            function a() { }
            if (false) { var d = 678 }
            console.log(d)// undefined
            console.log(b)// undefined
            var b = function () { }//函数表达式而不是函数声明
            console.log(b)// function (){ }
            function c() { }
            console.log(c)// function c(){}
        }
        fn(1, 2)

第一步:

//找形参和变量的声明,作为ao对象的属性名,值为undefined
AO:{
    a:undefined,
    c:undefined,
    d:undefined,
    b:undefined
}

第二步:

//实参和形参相统一
AO:{
    a:1,
    c:2,
    d:undefined,
    b:undefined
}

第三步:

//找函数声明,会覆盖名字一样的变量声明
AO:{
    a:function a() { },
    c:function c() { },
    d:undefined,
    b:undefined
}

第四步:js的解释执行(逐行执行)得出结果。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值