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

    1-JavaScript运行三部曲

    1. 语法分析
    2. 预编译
    3. 解释执行

    语法分析很简单,就是引擎检查你的代码有没有什么低级的语法错误;
    解释执行顾名思义便是执行代码了;
    预编译简单理解就是在内存中开辟一些空间,存放一些变量与函数 ;

    2-JS预编译什么时候发生

    预编译到底什么时候发生 ?
    误以为预编译仅仅发生在script内代码块执行前
    这倒并没有错
    预编译确确实实在script代码内执行前发生了
    但是它大部分会发生在函数执行前

    注意:
    预编译阶段发生变量声明和函数声明,没有初始化行为(赋值),匿名函数不参与预编译 ;
    只有在解释执行阶段才会进行变量初始化 ;


    预编译(函数执行前)
    1. 创建AO对象(Active Object)
    2. 查找函数形参及函数内变量声明,形参名及变量名作为AO对象的属性,值为undefined
    3. 实参形参相统一,实参值赋给形参
    4. 查找函数声明,函数名作为AO对象的属性,值为函数引用

    预编译(脚本代码块script执行前)
    1. 查找全局变量声明(包括隐式全局变量声明,省略var声明),变量名作全局对象的属性,值为undefined
    2. 查找函数声明,函数名作为全局对象的属性,值为函数引用


    预编译小节
    (a)预编译两个小规则
    1. 函数声明整体提升—(具体点说,无论函数调用和声明的位置是前是后,系统总会把函数声明移到调用前面)
    2. 变量 声明提升—(具体点说,无论变量调用和声明的位置是前是后,系统总会把声明移到调用前,注意仅仅只是声明,所以值是undefined)

    (b)预编译前奏
    (1)imply global 即任何变量,如果未经声明就赋值,则此变量就位全局变量所有。(全局域就是Window)
    (2)一切声明的全局变量,全是window的属性;
    var a=12;等同于Window.a = 12;

    (c)函数预编译发生在函数执行前一刻;

  • 相关阅读:
    传奇衣服、翅膀、武器、怪物、NPC等外观代码计算方法与公式
    传奇添加地图与配置参数
    传奇中如何加入衣服的翅膀效果
    传奇添加地图与配置参数详解
    NPC脚本界面自定义美化参数说明
    传奇物品叠加设置方法
    四级技能修炼NPC脚本参考
    传奇怎么设置沙巴克自动攻城
    HeroM2连击技能设置和DB完整数据
    python常用软件包
  • 原文地址:https://www.cnblogs.com/hongdoudou/p/12686311.html
Copyright © 2011-2022 走看看