JavaScript的预编译学习

预编译

一、js运行三部曲
                          1. 语法分析   2. 预编译  3. 解释执行
二、预编译前奏
     1.imply global 暗示全局变量:即任何变量,如果变量未经声明就赋值,此变量就为全局对象所有。
     如 a = 10 , 则 window.a = 10;
     如function test() {
           var a  = b = 123;
       }
       test();
       先将123赋给b,然后声明a,然后将b赋给a;
       console.log(b)   -->   123;
       console.log(a)   -->   undefined
     2.一切声明的全局变量,全是window的属性, 如
        var a = 123,则window.a = 10;
        console.log(a)  -->  console.log(window.a)
     window就是全局的域 
三、预编译
          预编译发生在函数执行的前一刻


                 局部(AO)

    1.创建AO对象  (Activation Object)(执行期上下文)

    2.找形参和变量声明,将变量和形参名作为AO属性名,值为undefined

    3.将实参值和形参统一

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



                 全局(GO)            window === GO

    1.生成了一个GO对象  Global Object

    2.找变量声明,将变量作为GO属性名,值为undefined

    4.在函数体里面找函数声明,值赋予函数体
例一:(局部)
<script type="text/javascript">
        function fn(a) {
            console.log(a);    //f a() {}

            var a = 123;

            console.log(a);    //123

            function a() {}

            console.log(a);    //123

            var b = function () {}

            console.log(b);    //f () {}

            function d() {}
        }
        fn(1);
</script>
1.创建AO对象
2.  AO{
        a: undefined,
        b: undefined,
    }
3.  AO{
        a: 1,
        b: undefined,
     }
4.  AO{
        a: function a() {},
        b: undefined,
        d: function d() {}
     }
 执行函数对a赋值
 AO{
        a: 123,
        b: undefined,
        d: function d() {}
    }
 执行函数对b赋值
  AO{
        a: 123,
        b: function () {},
        d: function d() {}
    }
例二:(全局)
<script type="text/javascript">     
       console.log(a);   //f a() {}
       var a = 123;
       function a() {}
       console.log(a);  //123
</script>
1.创建GO对象      
2. GO{
        a:undefined;
    }
4. GO{
        a:function () {}   
    }
执行函数对a赋值
   GO{
        a:123
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • JSON概览 JSON(JavaScript Object Notation)是一种基于文本的数据交换格式。无论你...
    技匠阅读 15,267评论 16 263
  • 不爱学习的我最近竟然也萌生学习的心。 知识付费大爆炸的年代, 书中自有黄金屋成了现实, 比如老奇葩们的《好好说话》...
    我是小J阅读 704评论 0 0
  • 非洲有谚语:想要走得快,就单独上路;想要走得远,就结伴同行。社会文明的进步,让抱团学习变得更为轻松,在参加完了第一...
    枝啊枝啊阅读 297评论 0 3
  • “也许你不会懂,从你说爱我以后,我的天空星星都亮了。我愿变成童话里你爱的那个天使......” 徐良的声音缓缓地从...
    女汉子QJ阅读 508评论 2 1
  • 昨晚翻朋友圈,看到一条让我异常激动的消息——瑶瑶领证了!配图是她身披洁白婚纱,与良人微笑对视。画面唯美,温馨,甜蜜...
    伊石榴阅读 350评论 0 0