美文网首页
javascript预编译+例题分析

javascript预编译+例题分析

作者: 刘翾 | 来源:发表于2017-11-08 20:37 被阅读59次

js运行三部曲

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

预编译前奏

  1. imply global 暗示全局变量, 即任何变量, 如果为经声明就赋值, 此变量就为全局对象所有.
  2. 一切声明的全局变量, 全是window的属性.
    例: var a = 123; --> window.a = 123;

预编译

四部曲:

  • 创建AO对象

  • 找形参和变量声明, 将变量和形参名作为AO属性名, 值为undefined

  • 将实参值和形参统一

  • 在函数体里面找函数声明, 值赋予函数体.
    例:

    例子
    以当前函数为例子
    创建AO对象为{
    a: undefined
    b: undefined
    }
    第三部将实参值和形参相统一
    AO = {
    a : 1,
    b : undefined
    }
    第四部, 在函数体里找函数声明, 值赋予函数体
    Ao = {
    a: function a( ){ },
    b: undefined,
    d: function d( ) { }
    }
    因此该例子打印出来的结果应该为
    例子
  • 总结
    变量声明提升,
    函数声明整体提升


相信你已经掌握了方法, 因此我们再来一个例子来试试

例子
function d ( ){ }创建AO对象, function d ( ){ }形参变量声明
AO = {
a : undefined,
b : undefined,
c : undefined
}
第三部实参与形参相统一
AO = {
a : 1,
b : undefined,
c : undefined
}
第四部,在函数体里找函数声明, 值赋予函数体
AO = {
a : 1,
b : function b ( ){ },
c : undefined,
d ; function d ( ){ }
}
最后开始执行, 先打印a为1, 借下来将c = 0, a = 3, b = 2, 打印b为2, 再打印b为2.


再来看一个例子

例子
注意: 这里的a也是全局的

相关文章

  • javascript预编译+例题分析

    js运行三部曲 语法分析 预编译 解释执行 预编译前奏 imply global 暗示全局变量, 即任何变量, 如...

  • JavaScript 的“预 编译”

    JavaScript 执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行...

  • javascript项目上很难用到的基础知识

    1.预解析 解析JavaScript代码的时候,首先是执行语法分析,然后才是预解析。语法分析----------分...

  • 你需要知道的javascript的提升

    javascript在执行前会有一个预编译过程,预编译过程会先预声明变量再预定义函数,比如 预编译过后,类似于 运...

  • JS的变量和函数提升

    1.js的运行和预编译过程 <1>.语法分析 查找基本语法有无错误; <2>、预解析/预编译 执行之前进行预解析;...

  • 第一章作用域是什么

    1.1 编译原理 编译语言 分词/词法分析 解析/语法分析 代码生成 对于Javascript来说,大部分情况发生...

  • day05-JS运行和编译

    1.JS运行和编译 1.1语法分析:查找基本语法有没有错误 1.2 预解析:执行之前进行预解析 ...

  • dyld流程分析

    编译流程 在开始分析dyld之前,我们先看下分析下可执行文件的整个编译流程: 如上图所示,我们编写的源文件,会在预...

  • 模块加载器

    浏览器端javascript依赖 几种实现方案 1.import es6规范,编译施加载,能够在编译时进行静态分析...

  • JavaScript预编译原理分析

    大家要明白,这个预编译和传统的编译是不一样的(可以理解js预编译为特殊的编译过程)JavaScript是解释型语言...

网友评论

      本文标题:javascript预编译+例题分析

      本文链接:https://www.haomeiwen.com/subject/vqzymxtx.html