javascript - ecmascript 制作中的困惑

标签 javascript ecma262

最近我对 ecma262 规范的制作感到困惑。

有些作品是基于我的假设,也可以是其他作品。

例如,声明

Statement可以是Block,也可以是IfStatement

我的困惑始于看起来像这样的算法

a. Let stmtCompletion be the result of evaluating the first Statement.

评估声明?这是什么意思?

例如,如果语句IfStatement,它将转到14.6 The if Statement 14.6.2 Runtime Semantics: Evaluation

我主要感到困惑,因为有些作品有 RS:评估,例如 IfStatement,而有些作品则没有 RS:评估> 如声明声明等...

最佳答案

If a Statement, for example, is an IfStatement will it go to the 14.6 The if Statement 14.6.2 Runtime Semantics: Evaluation ?

是的。

I'm mostly confused because there are productions that have their RS: Evaluation like IfStatement and some don't have the RS: Evaluation like Statement,Declaration, etc...

What does it mean?

这(在最近修订的规范中)甚至在 §5.2.2 Syntax-Directed Operations 中进行了解释。 。特别是,

除非另有明确指定,否则所有链产生式对于可能应用于该产生式左侧非终结符的每个操作都有隐式定义。隐式定义只是将具有相同参数(如果有)的相同操作重新应用于链产生式的唯一右侧非终结符,然后返回结果。例如,假设某个算法具有以下形式的步骤:“返回评估Block的结果”并且存在一个产生式:

block :{ StatementList }

但是求值操作并不将算法与该产生式关联起来。在这种情况下,评估操作隐式包含以下形式的关联:

运行时语义:评估

block :{ StatementList }

  1. 返回StatementList的计算结果。

因此,由于 Statement production 没有“运行时语义:评估” ,它获得隐式语义,将简单地评估相应的语句类型。

关于javascript - ecmascript 制作中的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69596172/

相关文章:

javascript - 使用 esprima 解析文件错误,同时使用 r.js 优化 js 文件

javascript - 为什么 ECMAScript RegExp 语法的替代符号是左递归的?

javascript - 我需要有关此回文代码的帮助

javascript - 如何从 function(){ $.get() return variable; 中获取变量} 功能 ?在jquery中?

javascript - Rhino 功能超出 ECMA 标准?

javascript - ECMAScript 关联数组到对象/原型(prototype)为空?

javascript - ES5 中的 Object.defineProperty?

javascript - 为什么没有官方 JavaScript 引用?

javascript - 如何获取某种字体的基线高度?

javascript - 在使用 JS 编译的 Kotlin 编程时,尝试在 Canvas 元素上移动圆圈时遇到问题