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

    预编译四部曲

    1、创建AO对象(执行期上下文)

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

    3、将实参与形参相统一

    4、在函数体寻找函数声明,AO对应属性值赋予函数体

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
    </head>
    <body>
    <script type="text/javascript">
        function fn(a){   
            console.log(a);   
            var a=123;   
            console.log(a);  
            function a(){   }   
            console.log(a);   
            var b=function(){};   
            console.log(b);   
            function d(){   } 
        }  
        fn(1); 
    </script>
    </body>
    </html>

    函数预编译过程

    1、创建AO对象

    AO{

    }

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

    AO{

      a : undefined

      b : undefined

    }

    3、将实参与形参相统一

    AO{

      a : 1

      b : undefined

    }

    4、在函数体寻找函数声明,AO对应属性值赋予函数体

    AO{

      a : function() a{}

      b : undefined

      d : function d(){}

    }

    js是解释性语言,读取一行,解释一行,在执行函数之前,先进行预编译,

    此时代码内 a b d 的值为

    AO{

      a : function a(){}

      b : undefined

      d : function d(){}

    }

    接着逐行读取代码,覆盖变量值。在预编译已编译的在执行时不再编译。

    执行结果:

    全局预编译

    1、创建一个GO对象(全局变量对象windoww)

    2、寻找变量声明,将变量名作为AO属性名。值为undefined.

    3、在函数体寻找函数声明,AO对应属性值赋予函数体

    <!DOCTYPE html>
    <html>
    <head>
    	<title></title>
    </head>
    <body>
    <script type="text/javascript">
    	console.log(a)
    	var a = 234
    	function a(){}
    	console.log(a)
    </script>
    </body>
    </html>

    预编译过程

    1、创建一个GO对象(全局变量对象windoww)

    GO {}

    2、寻找变量声明,将变量名作为AO属性名。值为undefined.

    GO{

      a : undefined

    }

    3、在函数体寻找函数声明,AO对应属性值赋予函数体

    GO{

      a : function a(){}

    }

    执行结果

    javascript的预编译练习题:https://www.cnblogs.com/2016-zck/p/11018464.html

  • 相关阅读:
    jquery事件之事件委托和事件切换
    jquery事件之事件处理函数
    jquery动画效果
    jquery筛选元素函数
    jquery操作DOM
    jquery对css操作
    jquery属性操作
    Jquery选择器(三)
    Jquery选择器(二)
    Jquery选择器(一)
  • 原文地址:https://www.cnblogs.com/2016-zck/p/11017470.html
Copyright © 2011-2022 走看看