这是给自己看的翻译是为了更好的理解JS执行环境到底是什么东东,我想会因为标题原因会给偶然不小心谷歌或者百度到的人看到。如果觉得没趣,很low,请赶紧点击关闭离开,不然这会浪费您的时间。
翻译这里开始(下面链接本文翻译的原文)
执行环境(来自ECMAScript规范)
一个执行环境是一种规范设备被用来追踪代码的执行时间评估通过一种ECMAScript来实现。此刻的任何一个点,事实上这里至多有一个正在执行代码的执行环境。这大家熟知的正在运行的执行环境。
执行环境栈是用来跟踪执行环境的。正在执行的执行环境会一直在这个栈的顶部。一个新的执行环境被创建出来无论什么时候控制权由当前正在执行的执行环境有关的可执行代码来调动而不是由跟执行环境无关的可执行代码来调度。以一种新的方式创建的执行环境会被压入到栈顶然后成为正在执行的执行环境。
一个执行环境包含了执行规定的状态,它是必须用来追踪相关代码的执行进程 。每一个执行环境至少都有这些状态的成分在表22中。
组成部分 | 目的 |
---|---|
代码执行状态 | 任何状态都需要完成,推迟,继续和执行环境有联系的代码的执行 |
函数 | 如果一个执行环境正在执行一个函数对象的代码,那么这个组成的值是这个函数对象。如果这个执行环境正在执行脚本或者模块的代码,那么这个值是null. |
范围 | 这个范围记录与访问ECMAScript源代码有关。 |
脚本模块 | 脚本记录和模块记录来自源代码的关系。如果这里没有原脚本和原模块这种情况对于 |
a new execution contexts is created whenever control is transferred from ececutable code
代码的求值通过运行执行环境也许会被推迟在规定的不同点。一旦运行执行环境暂停了一种不同的执行环境也许会成为当前的执行环境并且开始着手评估它的代码。在后来的一些时间一个被暂停的执行环境也许再次成为正在运行的执行环境并且继续回评估它的代码在被先前暂停的点上。在执行环境中正在运行的执行环境状态的转换经常会表现像栈中出后进先出的特性。但是一些ECMAScript特征要求不需要LIFO执行环境的转换
正在执行的执行环境Realm成分的值也被叫做当前Realm记录。正在执行的执行环境的函数成分的值也被叫做活跃函数对象。
对于ECMAScript 代码执行环境还有另外的状态成分在列表23中
组成成分 | 目的 |
---|---|
词法环境 | 查明词法的环境可以用来解决通过代码编写的标识符引用在这个执行环境里 |
变量环境 | 查明词法环境的环境记录保存由变量声明创建的绑定物在这个执行环境里 |
遇到有点难翻译的语句怎么办只能先把妨碍你脑子翻译的词先踢掉留下主谓宾
identifies the Lexical Environment used to resolve identifier references made by code within
this execution context.
identifier references made by code within this execution context.
(没有保存又要重新翻译了)
一个执行环境的词法环境和变量环境的成分一直是词法环境。当一个执行环境创建了它的词法环境和变量环境成分最初由一样的值
代表这生成器对象的评估的执行环境有另外的一种状态的成分在列表24
组成 | 目的 |
---|---|
生成器 | 在这个执行环境的生成器对象正在评估 |
在很多环境中仅有正在运行的执行环境(执行环境栈中最顶端)可以通过算法来操作在这个规范内。因此当这些术语‘词法环境’和‘变量环境’无条件的被使用时,因为它们和正在执行的执行环境的成分有关。
一种执行环境是一种存粹的规范机制并且不需要和ECMAScript实现的特定产物想符合。ECMAScript代码不可能直接访问或者观察执行环境的。
我这么翻译了接近了三个小时我收获了什么,这篇有很多不懂术语,查了也许还不能很好的翻译的出来,特别是遇到了很长很长的句子,更不知道该怎么翻译好了。我总得收获什么吧,就这么翻译完了。你知道了什么是执行环境了吗,你只是感觉上好像知道了多了一点了。
你问问自己把,你知道什么是执行环境了吗?
它就是一种环境了,可以有变量和函数的环境。它里面还有很多成分在里面。
学习到了方法论没有,就是下次遇到不懂的看心理学的英文时还是踏踏实实的看。不懂的记录下来。难翻译的没办法先把主谓语拿出来再看看。话是这么说还是要践行才有用。
现在重新再回头看一下原文。感觉自己翻译都看不下去。
翻译英文一定要耐心,不能跳,因为跳了你也不懂,老老实实一字一词看
难的句子就变简单来翻译咯。