js代码预编译过程

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <!-- 
        js 单线程 解释性语言
        js执行三部曲:
            1.语法分析: 有没有语法错误
            2.预编译: 预编译发生在函数执行的前一刻
                函数声明整体提升
                变量 声明提升

                1.imply global 暗示全局变量 :即任何变量,
                  如果变量未经声明就赋值,此变量就为全局对象(window)所有 window是全局的域

                2.一切声明的全局变量,全是window的属性

                ## 预编译四部曲
                    1.创建AO对象:(Activation Object)(执行期上下文)
                        AO{

                        }
                    2.找形参和声明变量,将变量和形参作为AO属性名,值为undefined
                        AO {
                            a : undefined,
                            b : undefined,
                        }
                    3.将实参值和形参值统一
                        AO{
                            a : 1,
                            b : undefined
                        }
                    4.在函数体里面找函数声明,值赋予函数体
                        AO{
                            a : function a() {},
                            b : undefined,
                            d : function d() {}
                        }
            3.解释执行: 按行执行
     -->
    <script>
        // function test() {
        //     // b未经声明就赋值给a b是window属性
        //     var a = b = 123;
        // }
        // test();

        // function test() {
        //     // 局部变量
        //     var b = 123;
        // }
        // test();

        function fn(a) {
            console.log(a);  //ƒ a () {}

            var a = 123;
            
            console.log(a);  //123

            function a () {}

            console.log(a);  //123
            
            var b = function () {}

            console.log(b); //ƒ () {}
            
            function d () {}
            
        }

        fn(1);
        
    </script>
</body>

</html>

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值