Javascript语法中的:和::和:::有什么区别

jfr*_*d00 9 javascript grammar

在Javascript 的ECMAScript语法规范中,有一个用双冒号定义的块,如下所示:

Literal ::
    NullLiteral
    BooleanLiteral
    NumericLiteral
    StringLiteral
    RegularExpressionLiteral
Run Code Online (Sandbox Code Playgroud)

用单个冒号定义的块如下:

PrimaryExpression :
    this
    Identifier
    Literal
    ArrayLiteral
    ObjectLiteral
    ( Expression )
Run Code Online (Sandbox Code Playgroud)

而且,即使是带有三个冒号的块:

uriCharacter :::
    uriReserved
    uriUnescaped
    uriEscaped
Run Code Online (Sandbox Code Playgroud)

单个和双重和三重冒号有什么区别?

Fra*_*bot 3

JSON 词法语法用于将字符序列转换为标记,类似于 ECMAScript 词法语法的部分内容。JSON 语法描述了 JSON 词法语法中的标记序列如何形成语法正确的 JSON 对象描述。

标记的词汇规则 ( "::") 意味着“语言的各个部分是什么样子”。5.5它定义了“是一个数字”之类的规则。

表达式的语法规则 ( ":") 表示“各个部分如何相互作用”。5.5 abc它定义了诸如“没有意义”之类的规则。

三冒号 ( ":::") 似乎是专门保留的,用于定义将字符串转换为数字的规则。该字符串" 0x1235 "(带有空格)是有效的数字。三冒号规则定义了这一点。

三冒号 ( ":::") 似乎也用于 uri 字符串语法。最常用的是这样的:"f%20o%20o"解码为"f o o". 这些规则定义了字符串“数字”部分的结构。

  • 虽然我确信这是正确的,但尚不清楚这种区别如何应用于给出的示例。您能澄清一下这些示例之间的区别吗? (4认同)