【发布时间】:2019-12-12 09:04:32
【问题描述】:
通过 ECMAScript 规范(ECMA-262 - 第 9 版)我注意到在许多地方使用术语“clause”而不是“声明”。更具体地说,以下关键字被称为子句:catch、extends、case、default 和 import。更准确地说,最后三个关键字仅在抽象操作中被称为子句,在实际文本中从来没有。
这里有一些例子:
它可以用作类定义的 extends 子句的值。
(第 447 页,第 19.1.1 章对象构造函数)
CaseBlock [Yield, Await, Return]:
{ CaseClauses [?Yield, ?Await, ?Return] opt }
{ CaseClauses [?Yield, ?Await, ?Return] optDefaultClause [?Yield, ?Await, ?Return]子>
CaseClauses [?Yield, ?Await, ?Return] opt }
(第 331 页,第 13.12 章 switch 语句)
通常一个词法环境是 与 ECMAScript 代码的某些特定句法结构相关联,例如 FunctionDeclaration、BlockStatement、 或 TryStatement 的 Catch 子句...
(第 128 页,第 8.1 章词汇环境)
进口声明 :
import ImportClause FromClause ;
导入 ModuleSpecifier ;
(第 418 页,第 15.2.2 章进口)
我知道import 在技术上是一个声明声明(尽管仍然是一个声明),但是其他的呢?为什么catch、case和extends不被称为语句?
【问题讨论】:
-
"clause" 基本上是“语句的一部分”,
catch不是语句,因为你不能只写一个catch语句;它必须是try - catch语句的一部分。 -
因为他们无法自立。它们是更大事物的一部分。
-
这个词来自一般的语法命名法。 “从句”是句子的一部分,而不是整个句子。
-
@Pointy 啊,我明白了。这回答了我的问题。
标签: javascript terminology specifications ecma