JavaScript 运行环境

JavaScript 运行环境

[TOC]

我们在这里会深入了解浏览器的javaScript的运行机制。

我们将了解 chrome V8引擎如何格式化代码和如何通过 Event Loop 让代码运行在一个线程上,包括 同步 和 异步。

1、前言

当我们在浏览器里面访问一个网址,比如 Chrome, Edge, Firefox 或者 safari。每一个浏览器都有一个 Javascript Running Environment 。在这个环境里,开发者可以访问构。一个程序的Web API。

AJAX、DOM树和其他API,不是JavaScript的一部分,它们只是浏览器提供的可以在JS 运行环境里面运行的含有方法和属性的对象。

当然,在运行环境中,是一个 js 引擎来格式化代码。每个浏览器都有自己的引擎版本。Chrome 使用 V8 JS 引擎,也就是我们接下来要分析的。

2、V8 JS 引擎

一旦Chrome 接收到web页面的javaScript 代码或者脚本,V8 js引擎就开始格式化代码。刚开始,它会部分的格式化代码来检查语法错误。如果没有找到语法错误,它将从上到下开始解读代码。它的最终目的是将JavaScript代码转化为机器可以读懂的机器码。但是在我们了解它到底对代码做了什么之前,我们必须先了解格式化代码的运行环境。

3、Javascript 运行环境

可以把js运行环境想象是一个大容器。在这个大容器里面还有其他的小容器。当 JS 引擎开始格式化代码时,代码被分块放入不同的容器中。

3.1 、Heap 堆

环境里面的第一个容器,也是V8 js 引擎的一部分,被称为“内存堆”。

当 JS 引擎在代码里碰到变量和函数声明,它把它们储存在堆里。

3.2、Stack 栈

环境里面的第二个容器是 call stack 调用栈。它也是 JS V8 引擎的一部分。当JS引擎碰到一个调用指令,比如一个 function call,

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2014-2020 Alex Wong
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~~~

支付宝
微信