JavaScript预编译

Posted 哈娄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript预编译相关的知识,希望对你有一定的参考价值。

预编译分为两种:

  • 函数预编译 (函数执行的前一刻执行)
  • 全局预编译 (页面加载完成时执行)

函数执行编译步骤:

  1. 创建Activation Object
  2. 找形参和变量声明, 将变量声明和形参作为AO的属性名, 值为undefined
  3. 将实参和形参值统一
  4. 在函数体内找函数声明,将函数名作为AO对象的属性名,值赋予函数体

代码Demo:

function fn(a) 
    var a = 1
    function a() 
    var b = function () 
    function d() 


代码编译解释:

1.创建AO对象

AO:

2.找形参和变量声明,作为AO的属性名,值为undefined

AO
    a: undefined,
    b: undefined

3.将实参和形参值统一

AO:
    a: 1,
    b:undefined

4.在函数体内找函数声明,将函数名作为AO的属性值,值赋予函数体

AO:
    a: function() ,
    b:undefined,
    d: function()

完成过程 

AO:
    a:underfined -> 1 -> function a()
    b:underfined
    d:function d()

全局预编译三部曲

  1. 创建Global object
  2. 找形参和变量声明, 将变量声明和形参作为GO对象的属性名,值为undefined
  3. 在全局里找函数声明,讲函数名为GO对象属性名,值赋予函数体

以上是关于JavaScript预编译的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript的预编译过程

JavaScript预编译流程详解

JavaScript预编译

JavaScript之预编译学习(内含多个面试题) #yyds干货盘点#

JavaScript预编译学习

JavaScript预编译