gpt4 book ai didi

javascript - 为什么在 ECMAScript 规范中将语句称为子句?

转载 作者:行者123 更新时间:2023-11-30 19:21:59 27 4
gpt4 key购买 nike

通过 ECMAScript 规范(ECMA-262 - 第 9 版),我注意到在许多地方使用术语“clause”而不是“声明”。更具体地说,以下关键字被称为子句:catchextendscasedefault导入。更准确地说,后三个关键字仅在抽象操作 中被称为子句,从未在实际文本中出现。

这里有一些例子:

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 在技术上是一个声明语句(虽然仍然是一个语句)但是其他的呢?为什么 catchcaseextends 不称为语句?

最佳答案

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?

因为它们不是独立的陈述。它们不代表单个 Action ,而是更大事物的一部分。 catch 没有 try 就没有用,extends 没有 class 就没有用,case没有 switch 是没用的。

关于javascript - 为什么在 ECMAScript 规范中将语句称为子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57348444/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com