zoukankan      html  css  js  c++  java
  • js预编译

    1、js运行三部曲

      语法分析、预编译、解释执行

    2、预编译

      预编译发生在函数执行的前一刻

      第一步:创建GO或AO对象(执行期上下文)

      第二步:将形参和var声明的变量作为AO的属性名,值为undefined

      第三步:将实参和形参统一

      第四步:在函数体里面找函数声明,将声明的函数名作为AO的属性名,值为函数体、

      实例1:

        function  fn(a){

          console.log(a)

          var  a  =  123;

          console.log(a)

          function  a  (){}

          console.log(a)

          var  b  =  function  ()  {}

          console.log(b)

        }

        fn(1)

        预编译过程

          第一步:创建AO对象  AO { }

          第二步:找形参和var声明的变量作为AO对象的属性,值为undefined

            AO {

              a: undefined,

              b: undefined

            }

          第三步:将实参和形参统一

            AO {

              a: 1,

              b: undefined

            }

          第四步:找函数声明,将声明的函数名作为AO对象的属性名,值为声明的函数体

            AO {

              a: function a(){},

              b: undefined

            }

          执行函数fn     

          function  fn(a){

            console.log(a)  // function a(){ }

            var  a  =  123;

            console.log(a)  // 123

            function  a  (){}

            console.log(a)  // 123

            var  b  =  function  ()  {}

            console.log(b)  // function (){ } 

        }

      

      实例2:

        function  test(a, b){

          console.log(a)  // 1

          c  =  0;

          var  c;

          a  =  3;

          b  =  2;

          console.log(b)  // 2

          function  b(){ }

          function  d(){ }  

          console.log(b)  // 2

        }

        test(1)

        预编译:

        AO {

          a: 1,

          b: function  b(){ },

          c: undefined,

          d: function  d(){ }

        }

  • 相关阅读:
    Office2003中文绿色免安装版本(wordExcelPowerPoint三合一)
    图片去背景神奇网站remove.bg
    网络视频下载分享
    Windows10手机投屏到电脑
    测试开发工程必备技能之一:Mock的使用
    实战教程:如何将自己的Python包发布到PyPI上
    Sysbench测试神器:一条命令生成百万级测试数据
    Java 获取PDF中的数字签名信息
    Java 在Excel中添加分离型饼图、环形图
    C#/VB.NET 添加、删除PPT幻灯片中的数字签名
  • 原文地址:https://www.cnblogs.com/cuishuangshuang/p/13228168.html
Copyright © 2011-2022 走看看