zoukankan      html  css  js  c++  java
  • js预编译AO与GO

    JS代码编译过程:
    1.检查通篇的语法错误,若有错误则不编译执行.
    2.预编译.
    3.解释一行,执行一行.

    js预编译时会创建GO对象与AO对象

    GO: global object 即 全局上下文, GO=window对象,GO即操作window,a为全局变量,console.log(a) = console.log(window.a)

    AO :   activation object 活跃对象,函数上下文,在函数执行之前进行的一个步骤


    AO步骤:

    1. 创建AO(Activation Object)对象,又叫执行期上下文;
    2. 寻找形式参数和变量声明作为AO的属性名,并赋值为undefined;
    3. 传入实际参数的值;
    4. 在函数体内寻找函数声明,放入作为AO的属性,并赋值为其函数体。


    GO步骤:

    1. 创建GO(Global Object)对象;
    2. 寻找变量声明作为GO的属性名,并赋值为undefined;
    3. 寻找函数声明,放入作为GO的属性,并赋值为其函数体。

    demo:

    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 () {}

          function d() {}
        }

        fn(1);
     
    根据预编译以及执行过程得到结果: 
    function a () {}, undefined, 234,123,123,function () {}

  • 相关阅读:
    有问题的Py代码
    Python撑爆内存的代码
    python socket 绑定端口收发信息
    python socket UDP通信
    B类IP地址
    python in的用法
    Python continue的用法
    python27接受用户输入的数据
    基于jQuery实现左右图片轮播(原理通用)
    Jquery实现的简单轮播效果-代码
  • 原文地址:https://www.cnblogs.com/wangsai-666/p/12213581.html
Copyright © 2011-2022 走看看