JavaScript 运行环境

JavaScript 运行环境

[TOC]

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

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

1、前言

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

AJAXDOM树其他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:

请我喝杯咖啡吧~~~

支付宝
微信