好的,所以我最近一直在阅读ES-5词汇环境范围,我不确定我是否真的理解变量在EcmaScript中的存储方式.我做了一些研究,但没有澄清我的信息,只给我带来了两个问题.所以它们是:
第一个是关于ES-3 activations objects/ variable objects.在阅读了ES-3规范和Internet上的一些资源后,我可以假设它们只是普通的对象,例如像那些创建的那样new Object,但没有一个消息来源直接说"是的,这只是一个简单的对象".此外,Dmitry Soshnikov在他的博客上写道(重点是我的):
在示意性和示例中,可以将变量对象呈现为普通的ECMAScript对象
而且引用并不能让我确定激活对象到底是什么.所以这是第一个问题:激活对象是一个常规的EcmaScript对象吗?如果没有,那么它又是什么呢?
在我们现在的ES-5中object environment records,它似乎与ES-3激活对象或多或少相同,并且declarative environment records在函数和try-catch语句中替换了激活对象.因此,假设对象环境记录都只是普通的EcmaScript对象,那么什么是声明环境记录?规范并没有澄清这一点,而且,从我在那里读到的,我无法想象这不是作为一个对象实现的.因此,如果声明性环境记录不是ES对象,那么它们是什么以及它们在代码执行期间如何实现和表示?
非常感谢您提前为我提供这个主题.
编辑:我想我需要澄清这个问题是什么.我想知道的主要事情是激活对象/对象环境记录和声明性环境记录之间的确切区别.这是我最感兴趣的.