如何阅读ECMA标准
如何阅读ECMA标准
ECMA是一个js标准,他只提供抽象定义,具体实现取决于实际环境。例如Node和浏览器环境就有不同的全局对象。
阅读ECMA有以下难点:
- 概念:大量的概念横跨整个文档。
- 产生式的上下标:简略的表达了各种含义。
- 伪代码:只提供抽象定义。
- 省略语义:有很多的操作序列被简化成简单的词汇存在于各种代换式中。
本文只对ECMA的内容进行简单的介绍,具体需要看术语部分。
产生式、非终结:production
ECMA中的产生式(也称为非终结符号)如下所示,产生式用于说明或定义句子的组成结构。
非终结符号在ECMA中显示为斜体类型。
参数列表的产生式
ArgumentList :
AssignmentExpression
ArgumentList , AssignmentExpression
这说明一个参数列表(ArgumentList)可以表达为一个参数表达式(AssignmentExpression)或一个参数列表通过逗号(,)与参数列表(ArgumentList)的组合。
文法参数:Grammatical Parameters
ECMA中的携带文法参数产生式如下所示,参数化的产生式是一组产生式的简写。产生式的下标如果是 [] 包括的,显然他是语法参数。
参数化的产生式
StatementList[Return,In] :
ReturnStatement
ExpressionStatement
该产生式是以下的缩写:
参数化产生式的完整样子
StatementList :
ReturnStatement
ExpressionStatement
StatementList_Return :
ReturnStatement
ExpressionStatement
StatementList_In :
ReturnStatement
ExpressionStatement
StatementList_Return_In :
ReturnStatement
ExpressionStatement
可以看出 [] 中的每个参数都经过组合。
伪代码
ECMA在抽象操作(或称为算法)的定义时,就会展示如下的伪代码。ECMA中的语言值以粗体表示,如以下中的underfined。
ToBoolean方法的抽象定义
- If argument is a Boolean, return argument.
- If argument is one of undefined, null, +0𝔽, -0𝔽, NaN, 0ℤ, or the empty String,return false.
- NOTE: This step is replaced in section B.3.6.1.
- Return true.