js作用域问题

function fn (a, c) {
    console.log(a)
    var a = 123
    console.log(c)
    function a () {}
    if (false) {
        var d = 678
    }
    console.log(d)
    console.log(b)
    var b = function () {}
    console.log(b)
    function c () {}
    console.log(c)
}

上述代码的输出应为:

 

创建作用域的过程

1.创建ao对象 AO{}

2.找形参和变量声明将变量和形参名当做AO对象的属性名,值为undefined

3.实参形参相统一

4.在函数体里面找函数声明,值赋予函数体

AO: {
    a: undefined, 1 => function a () {}
    c: undefined, 2 => function c () {}
    d: undefined,
    b: undefined
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值