原文: https://javascript.plainenglish.io/how-javascript-works-a-visual-guide-515199eef837

这篇博客通过动画的形式展现js的执行过程,对理解js是如何工作的很有帮助。本篇翻译会对原文翻译有所删减,剔除一些废话,直接翻译核心的讲解部分。另外水平有限,如果翻译有不对的地方,欢迎指正!

执行上下文

Everythig in Javascript happens inside an Execution Context

Javascript中的一些都发生在执行上下文中。

我希望大家都能记住这句话,因为它非常重要!你可以假设执行上下文是一个大的容器,当浏览器想要运行js代码时会调用它。在这个容器中有两个组件:

  1. 内存组件
  2. 代码组件

内存组件

内存组件也叫变量环境,在内存组件中,变量和函数存储成 键值对 的形式

代码组件

在代码组件中,代码会一行一行的执行,代码组件还有一个别名叫做 执行线程

https://z3.ax1x.com/2021/11/20/IO85iq.png

javascript是同步的单线程语言。因为它一次只能以特定的顺序执行一个命令。

代码执行

var a = 2;
var b = 4;

var sum = a + b;

console.log(sum);

在这段代码中,初始化了两个变量a,b,然后将a和b相加的值赋值给了变量sum,我们来看看这段代码是怎么执行的。

https://z3.ax1x.com/2021/11/20/IOG9SK.gif

浏览器创建了一个全局执行上下文,全局上下文中包含了刚刚上文说到的内存组件还有代码组件。浏览器会分两个阶段运行这段代码。

  1. 内存创建阶段