JS-函数预编译

函数调用时 怎么运行代码的

        1. 分析代码是否正确 符号 词法分析

        2. 隐式操作 ==> 预编译: 函数调用了以后 在代码运行之前

                1) 函数每次调用都会生成一个对象: 执行期上下文对象

                2) 给AO对象添加成员: 函数内部的局部变量和形参变量名作为AO对象的属性名

                        AO:{a:undefined}

                        ao.a=undefined

                        ao.a=undefined 形参和局部变量一样的时候不影响

                3) 把传入的实参赋值给AO对象的属性        

                        AO:{a:100}

                4) 局部函数声明 赋值 把局部函数的名字让AO对象也有一个一样的成员名 把函数体赋值给这个属性

        3. 运行代码: 预编译过的就不再运行

                AO:{a:100,fn:function fn() {}}

                console.log(a) 100

                a = 20

                console.log(a) 20

function fm(a) {
    console.log(a); // 100
    var a = 20;
    function fn() {};
        console.log(a); // 20
    };
var b = 100;
fm(b);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值