Javascript,ES5+还有激活对象吗?

标签 javascript ecmascript-6

正在阅读有关 javascript 执行上下文的一些信息。我正在阅读以下内容 article Rupesh Mishra 的。

文章指出,每次调用新函数都会创建一个新的执行上下文。执行上下文确实有 2 个阶段创建阶段和执行阶段,其中代码逐行执行。

据说在创建阶段 JS 引擎做了 3 件事:

  1. 确定this的值
  2. 创建作用域链
  3. 创建激活或变量对象

这是对激活对象的解释:

Creates the Activation object or the variable object: Activation object is a special object in JS which contain all the variables, function arguments and inner functions declarations information. As activation object is a special object it does not have the dunder proto property.

问题:

ES5+还有这个激活对象结构吗?如果不是,执行上下文创建阶段的当前步骤是什么?

最佳答案

不,ES5(及更高版本)不再使用标准的 JS 对象来存储变量。它使用 lexical environments (带有 this 值和范围链)包含 environment records存储变量值的各种类型。

What are the current steps of the creation phase of an execution context?

Section 10.4 Establishing an Execution Context谈论那个。

行为与 ES3 所做的并无太大区别(毕竟旧代码仍然有效),只是使用新术语进行描述。

关于Javascript,ES5+还有激活对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50469075/

相关文章:

javascript - 如何在 react 组件中为内部函数声明一个变量?

javascript - Microsoft EDGE 消息 : SCRIPT1006: Expected ')'

javascript - 将 HTML 值分配给 JavaScript 变量

javascript 条件语句不会进入第二个语句

javascript - 将 php obj 返回到 javascript 回调

javascript - ES6 typeof 抛出错误

javascript - 如何在 ES6 类中使用静态变量?

javascript - AngularJS + Gulp 文件和文件夹结构以及正确的 gulpfule.js 配置

javascript - 如何使 define php 也可以在 js 中使用

javascript - ReactJS 循环执行Action