异步 JavaScript
简评:如果你对 JavaScript 异步的原理感兴趣,这里有一篇不错的介绍。 JavaScript 同步代码是如果工作的 在介绍 JavaScript 异步执行之前先来了解一下, JavaScript 同步代码是如何执行的。 这里有两个概念需要了解: ** 执行上下文(Excution Context)** 执行上下文是一个抽象的概念,用于表示 JavaScript 的运行环境,任何代码都会有一个执行上下文。 全局代码运行在全局执行上下文,函数里的代码运行在函数执行上下文,每一个函数都有自己的执行上下文。 调用堆栈(Call Stack) 调用栈是一个具有 LIFO(后进先出)结构的栈,用于储存代码执行阶段所有的执行上下文。 因为 JavaScript 是单线程的,所以 JavaScript 只有一个单独的调用栈。 我们以下面例子介绍同步代码执行过程。 const second = () => { console.log('Hello there!'); } const first = () => { console.log('Hi there!'); second(); console.log('The End'); } first(); 创建全局上下文(由 main() 表示),并将全局上下文推到栈顶。然后依次将遇到函数执行上下文推到栈顶(如果函数中执行其他他函数