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

    
    
    1 var num = 100;
    2         function fun(num){
    3             console.log(num);
    4         }
    5         fun(5);

    以这段代码为例分析函数的预编译

      开始一步步的分析

      1.分析GO对象,首先会生成保存全局变量的全局对象。

        1.1生成自己的GO对象

        GO={}

        1.2分析GO对象中的变量声明

        GO={

          num:undefined

        }

        1.3分析GO对象中的函数声明   

        GO={

          num:undefined

          fun:function

        }

      2.逐行执行

        在第一行产生了赋值:

        GO={

          num:100

          fun:function

        }

        到第五行函数调用,在调用的函数前的一瞬间生成了一个AO对象

      3.生成AO对象

        AO={}

        3.1分析参数

          AO={

            num:5

          }

        3.2分析变量声明  没有略过

        3.2分析函数声明  没有略过

        最后的AO对象为

        AO={

          num:5

        }

      然后开始逐行执行

    知识点汇总:

     1.函数在执行前的一瞬间,会生成一个AO(active object)对象
     2.分析参数,形参作为AO对象的属性名,实参作为AO对象的属性值
     3.分析var变量声明,变量名作为AO对象的属性名,值为undefined,如果遇到同名的,不去做任何改变
     4.分析函数声明,函数名作为AO对象的属性名,值为函数体,如果遇到同名的,直接覆盖

  • 相关阅读:
    利用rqalpha完成一个股指期货的回测(二) 分钟数据获取和转换
    利用rqalpha完成一个股指期货的回测(一)
    Pandas
    SAR停损指标
    一些简单的指标
    协程--流畅的Python第16章读书笔记
    python初级(302) 8 列表(选择排序练习二)
    博客已转移至 http://blog.yemou.net/
    将博客搬至51CTO
    将博客搬至CSDN
  • 原文地址:https://www.cnblogs.com/wangzheng98/p/11009800.html
Copyright © 2011-2022 走看看