JSinDeep1:探索执行环境 (Execution Context)-ES3篇
JSinDeep1: 探索执行环境 (Execution Context)-ES3 篇 声明 JSinDeep 系列文章主要内容为作者对 ECMA-262 标准 中一些概念的理解和探究,同时意在帮助大家快速理解。本着严谨的态度,同时又需避免 API 式的枯燥细节罗列。文章会以适当插图、例子去诠释概念,致力于通俗易懂。更具体、严谨、完整的描述建议阅读 ECMA262 文档。碍于作者水平有限,文中若有错误,欢迎大家批评指正。 *其它版本: English-Blog , English-PDF , Chinese-Blog , Chinese-PDF 概要 在我们写JavaScript代码时会定义一些变量、函数等。解释器在执行这些代码时是如何处理并找到我们定义的这些数据的?在程序执行时,引用这些变量等操作的背后都发生了什么?本文主要探讨 ECMA-262-3 标准 中的执行环境 (Execution Context) 及与之相关的一些内部机制和模型。 定义 当程序执行的控制权转移至ECMAScript可执行代码时,会进入到一个执行环境中 (Execution Context,缩写为EC) 。在一个EC内也可能进入到一个新的EC,这些EC逻辑上 1 会形成一个栈 (Stack) 。 EC 是程序运行时动态创建的。例如:每一个函数在被调用时都会创建一个EC,重复调用函数 (包含递归调用的情形