【发布时间】:2017-01-02 21:19:55
【问题描述】:
我只是想弄清楚执行上下文工作流程的简单解释。
--代码
var a=10;
function sample(){
var y = 10;
};
--
- Javascript 引擎启动。
- 全局执行上下文已创建。
- 创建了词法和变量环境对象。
- 此属性已创建。指向全局对象。
环境对象(词法和变量)具有环境记录和
外属性。谁能帮忙解释一下
在此上下文中的环境对象。创建阶段扫描代码变量被提升为全局 语境。
- Environment 对象内的环境记录(词法或 variable ??) 保留变量定义。
它扫描函数代码并找到示例函数。发生什么了 当它找到一个功能?现在是否设置了 [[scope]] 属性?将是 如果有人可以清楚地解释 [[scope]] 属性,那就太好了
全局执行上下文的执行阶段已启动。
- 到达函数示例。
- 示例函数上下文已创建。
- 与上述类似的步骤发生在创建阶段。
- 创建了一个执行上下文(
- 创建了词法和变量环境)
- 词法环境有环境记录和外部环境
它指向全局词汇环境。 - 还使用类似的属性创建了可变环境。
- 变量被提升。
- 现在 [[scope]] 属性发生任何变化??
- 执行进入执行阶段。等等。
请注意:我有点理解当可能存在函数表达式或 try catch 子句等时解释和行为会发生变化。已阅读变量环境在这种情况下发挥作用。我只是在寻找上述功能的工作流程。甚至函数的参数也会创建一个参数属性。这也可以忽略。只是基于上面的示例代码对词法变量环境和 [[scope]] 属性的一个非常简单的解释。还有一个这个属性。在这种情况下,它只是全局对象 - 我相信两种上下文的窗口。让我们也忽略它以保持简单:)。在理解这可能是我将为此创建一个单独的问题:)。
希望有人能帮助我理解这个基本概念。寻找基于 ES5 的解释。提前感谢您的帮助。
米娅
【问题讨论】:
标签: javascript ecmascript-5 executioncontext