美文网首页
2019-04-13 你不知道的javascript之预编译上

2019-04-13 你不知道的javascript之预编译上

作者: esbook | 来源:发表于2019-04-13 22:21 被阅读0次

老样子,先看下面的函数

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)

打印结果 function(){}  123  123  function(){}

=====华丽的分隔符-----------------------------------------

js 特点: 单线程 解释性语言

js 执行 第一步

预编译:预编译发生再函数执行的前一刻

预编译四部曲:{

    1.创建ao对象

    2.找形参和变量申明,将形参和变量的名作为ao的属性名,初始值为undefined

    3。 将实参和形参统一  1 =》a f(1)

    4. 在函数体{}中找函数声明,值赋予函数体

}

1.创建AO对象(Activation Object)(执行期上下文)

先定义后执行  fn 声明 优先于 变量申明  

下面是AO 对象的变化过程

AO{

    a:undefined; 

    b:undefined,

    d: function d(){}

}

AO{

a:1;

b:function(){},

}

AO{

a:function(){};

b:function(){},

d: function d(){}

}

AO{

a:3;

b:function(){},

d: function d(){}

}

相关文章

  • 2019-04-13 你不知道的javascript之预编译上

    老样子,先看下面的函数 function fn(a){ console.log(a) var a = 123 co...

  • JavaScript 的“预 编译”

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

  • JavaScript 作用域

    作用域是什么 参考和摘录自《你不知道的JavaScript(上)》 编译原理 通常将 JavaScript 归类为...

  • JavaScript预编译

    JavaScript预编译,你不知道的JavaScript 隐式类型转换 typeof   typeof 用来校验...

  • 你需要知道的javascript的提升

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

  • 理解JavaScript中的LHS和RHS

    参考资料:凯尔·辛普森《你不知道的JavaScript(上卷)》 1. 编译原理 JavaScript引擎首先会在...

  • 你不知道的javaScript(上)

    第1章 作用域是什么 几乎所有编程语言最基本的功能之一,是能够储存变量中的值,并能在之后对这个值进行访问或修改。 ...

  • 探索 JavaScript 作用域

    JavaScript 是实际上是一门编译语言。但 JavaScript 并没有多少时间可供编译,在大部分情况下,编...

  • 3、node的核心模块

    JavaScript核心模块的编译过程; 在编译所有C/C++文件之前,编译程序需要将所有的JavaScript模...

  • JavaScript 引擎查询 LHS 和 RHS

    一般我们将 JavaScript 归类为 “动态” 或 “解释执行”语言,但事实上JavaScript也是一门编译...

网友评论

      本文标题:2019-04-13 你不知道的javascript之预编译上

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