美文网首页
js的执行过程

js的执行过程

作者: 张柳哥 | 来源:发表于2018-01-16 12:18 被阅读0次

JavaScript是解释型语言,也就是说,我们的js代码会通过一个解释器来进行解释执行,这个解释器我们称为js引擎,因为我们的浏览器也能执行js,所以浏览器里面也有js引擎,不同的浏览器有不同的js引擎,比如chrome的V8,safari的webkit,IE浏览器的Trident等。

js引擎的执行需要走三个步骤,第一是进行语法分析,这个比较简单,就是看你的代码格式是不是正确的,比如,如果你少了个大括号,就会被报错。

第二步是进行预编译,预编译会把代码当中使用的变量,定义的函数解析出来,确定出环境中的变量和函数等信息,也就是这个过程会导致js变量提升的问题,比如:

var a = 1; // 变量声明
function b(y) { // 函数声明
  var x = 1;
  console.log('so easy');
};
var c = function() { // 是变量声明而不是函数声明!!
  // ...
}
b(100);

当js引擎进行预编译的时候,首选会生成一个GO(Global Object,这里是window):

GO/window = {
  //页面加载创建GO同时,创建了document、navigator、screen等等属性
  a: undefined,
  c: undefined,
  b: function(y){
    var x = 1;
    console.log('so easy');
  }
}

第三步就是解释并执行代码,直到遇到b(100),代码执行后活动对象变成了:

GO/window = {
  //页面加载创建GO同时,创建了document、navigator、screen等等属性
  a: 1,
  c: function() {
    // ...
  },
  b: function(y){
    var x = 1;
    console.log('so easy');
  }
}

当执行b(100)的时候,js引擎会针对b函数进行预编译,创建AO(Active Object)对象:

AO = {
  //创建AO同时,创建了arguments等等属性,此处省略
  y: 100,
  x: undefined
}

然后执行b(100)

之后会一直重复进行预编译=>代码执行的过程。

相关文章

  • js的执行过程

    JavaScript是解释型语言,也就是说,我们的js代码会通过一个解释器来进行解释执行,这个解释器我们称为js引...

  • js的执行过程

    在网络的直言片语中禹禹前行,在书本的记录中逐步加深,然而只有在实践中才能提出疑问,才能映像深刻。 我所理解的js执...

  • JavaScript面向对象编程

    JS的解析与执行过程 全局预处理阶段执行阶段 函数预处理阶段执行阶段

  • 我的JS笔记 -- 执行上下文

    执行上下文,就是Js执行的时候的一个运行环境/作用域(scope)。执行上下文决定了Js执行过程中可以获取哪些变量...

  • 浏览器渲染原理

    HTML 的解析过程 js 的下载和执行会阻塞 HTML 的解析,等 js 执行完继续去解析 HTML 问题1:为...

  • JS的解析与执行过程

    总是感觉JavaScript的基础很差,说会也会说不会还真就不会,温故而知新,最近就开始复习起来,对解析与执行过程...

  • JS的解析与执行过程

    /* 今天学习了JS的解析与执行过程,感觉好牛逼,记录下来,以便日后复习 */ //一阶段 var a = 5; ...

  • 浏览器中的事件循环与Node中的事件循环

    浏览器中的事件循环 JS线程读取并执行JS代码 执行JS代码的过程中,指定异步的操作给对应的线程处理 异步线程处理...

  • 5.js引擎执行代码的过程

    先来看看js引擎执行代码的过程:代码执行分为两个过程,先是分析阶段(可以理解为执行准备阶段),然后是真正执行阶段。...

  • 19. JS的解析

    JS的解析 学习目标: 了解 定位js的方法 了解 添加断点观察js的执行过程的方法 应用 js2py获取js的方...

网友评论

      本文标题:js的执行过程

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