为什么在 ECMAScript 规范中将语句称为子句?
Why are statements referred to as clauses in the ECMAScript spec?
通过 ECMAScript 规范(ECMA-262 - 第 9 版)我注意到在很多地方术语“子句”用于代替“语句”。更具体地说,以下关键字被称为子句:catch
、extends
、case
、default
和 import
。更准确地说,最后三个关键字仅在 抽象操作 中被称为子句,从未在实际文本中提及。
这里有一些例子:
It may be used as the value of an extends clause of a class definition.
(p. 447, ch. 19.1.1 The Object Constructor)
CaseBlock [Yield, Await, Return] :
{ CaseClauses [?Yield, ?Await, ?Return] opt }
{ CaseClauses [?Yield, ?Await, ?Return] opt DefaultClause [?Yield, ?Await, ?Return]
CaseClauses [?Yield, ?Await, ?Return] opt }
(p. 331, ch. 13.12 The switch Statement)
Usually a Lexical Environment is
associated with some specific syntactic structure of ECMAScript code such as a FunctionDeclaration, a BlockStatement,
or a Catch clause of a TryStatement...
(p. 128, ch. 8.1 Lexical Environments)
ImportDeclaration :
import ImportClause FromClause ;
import ModuleSpecifier ;
(p. 418, ch. 15.2.2 Imports)
我知道 import
在技术上是一个声明语句(虽然仍然是一个声明)但是其他的呢?为什么 catch
、case
和 extends
不称为语句?
I understand that import
is technically a declaration statement (still a statement though) ...
没有import
本身只是一个关键字。 import x from "y";
作为一个整体是一个声明(因为它可以独立存在)。
... but what about the others? Why are catch, case and extends not referred to as statements?
因为它们不是独立的陈述。它们不代表单个动作,而是更大事物的一部分。 catch
没有 try
没用,extends
没有 class
没用, case
没有 switch
.
没用
通过 ECMAScript 规范(ECMA-262 - 第 9 版)我注意到在很多地方术语“子句”用于代替“语句”。更具体地说,以下关键字被称为子句:catch
、extends
、case
、default
和 import
。更准确地说,最后三个关键字仅在 抽象操作 中被称为子句,从未在实际文本中提及。
这里有一些例子:
It may be used as the value of an extends clause of a class definition.
(p. 447, ch. 19.1.1 The Object Constructor)
CaseBlock [Yield, Await, Return] :
{ CaseClauses [?Yield, ?Await, ?Return] opt }
{ CaseClauses [?Yield, ?Await, ?Return] opt DefaultClause [?Yield, ?Await, ?Return]
CaseClauses [?Yield, ?Await, ?Return] opt }
(p. 331, ch. 13.12 The switch Statement)
Usually a Lexical Environment is associated with some specific syntactic structure of ECMAScript code such as a FunctionDeclaration, a BlockStatement, or a Catch clause of a TryStatement...
(p. 128, ch. 8.1 Lexical Environments)
ImportDeclaration :
import ImportClause FromClause ;
import ModuleSpecifier ;
(p. 418, ch. 15.2.2 Imports)
我知道 import
在技术上是一个声明语句(虽然仍然是一个声明)但是其他的呢?为什么 catch
、case
和 extends
不称为语句?
I understand that
import
is technically a declaration statement (still a statement though) ...
没有import
本身只是一个关键字。 import x from "y";
作为一个整体是一个声明(因为它可以独立存在)。
... but what about the others? Why are catch, case and extends not referred to as statements?
因为它们不是独立的陈述。它们不代表单个动作,而是更大事物的一部分。 catch
没有 try
没用,extends
没有 class
没用, case
没有 switch
.