Javascript中“编译时间”的等效术语

时间:2018-06-22 11:15:09

标签: javascript terminology

术语编译时间与编译语言(例如C ++)一起使用,以指示源代码经过编译过程的时间点。

术语 runtime 用于指示用户打开和运行应用程序的时间点。

例如,如果我们编写了一个简单的游戏,该游戏基于一些顶点列表渲染了地形...如果从服务器获取了该地形数据,我可能会说直到之前,地形的状态都是未知的运行时。但是,如果设想只有一个地形“模型”,并直接在源代码中对其进行配置,我可能会说在编译时就知道了地形的状态(我想这样说错了吗?)。

在Javascript中,编译时的等效术语是什么?我自己的解决方案是将其称为“设计时间” / em,但是我很想知道是否有正确的术语。

3 个答案:

答案 0 :(得分:0)

在您的示例中,仅说它是“ 硬编码”可能更有意义,因为这对于您所描述的内容似乎更为准确。硬编码的事物在编译时总是已知的,但是在编译时已知的事物不一定是硬编码的(例如,在C ++中,可以使用constexpr函数生成它们,也可以使用构建参数将其注入)。 / p>

在Javascript中最接近“编译时”的东西,我可能会称其为“ build-time ”,因为您经常在Javascript中有某种构建步骤,无论这是使用WebPack,只是简单的缩小,甚至只是将应用程序文件的特定版本收集到某种可分发的程序包中。即使您实际上根本没有执行此步骤,我认为人们通常也会理解这是什么意思。

答案 1 :(得分:0)

取决于实现,但是某些引擎具有“及时”(JIT)编译功能。参见JavaScript Just In Time compilation

但是,作为代码编写者而不是引擎可以做的事情主要限于捆绑和最小化,以减少获取运行程序所需的所有脚本。

最接近的比较可能是您如何动态和静态链接已编译语言。

答案 2 :(得分:0)

Javascript 中没有真正的等同于“编译时间”。

一个常用术语来指代例如没有赋值的“提升”或变量声明是“创建阶段”(相对于“执行阶段”)。

这可以很好地解释和理解 javascript。然而,不一定真的发生了这样一个特定的“阶段”。

语言规范 ECMA-262 也不使用这些术语。相反,它只使用相对术语,即它指定在其他事情之前或之后应该发生什么,并且显然将实现留给引擎开发人员。

例如通常在互联网上以如下方式解释:

<块引用>

var 在“创建阶段”声明,并在“执行阶段”初始化

但是 ECMA 只是更像这样指定它:

<块引用>

一个 var (/let/const/...) 在 X 时被创建,但只要 Y 保持“未定义”,...(但在 Z 之前可能无法访问,...)

此类相关术语的示例:

ECMA-262,第 11 章,第 13.3.2 章:

<块引用>

Var 变量在其包含的词法环境被实例化时创建...
... 被赋值 ... 当 VariableDeclaration 被执行时,不 创建变量时

ECMA-262,第 11 章,第 8.1 章:

<块引用>

每次评估此类代码时都会创建一个新的词法环境