gpt4 book ai didi

javascript - 理解 JavaScript 中的对象初始化器符号

转载 作者:行者123 更新时间:2023-11-30 12:51:52 27 4
gpt4 key购买 nike

sec 11.1.5在 ECMA-262 中,我们有对象声明符号:

ObjectLiteral :
{ }
{ PropertyNameAndValueList }
{ PropertyNameAndValueList , }
PropertyNameAndValueList :
PropertyAssignment
PropertyNameAndValueList , PropertyAssignment
PropertyAssignment :
PropertyName : AssignmentExpression
get PropertyName ( ) { FunctionBody }
set PropertyName ( PropertySetParameterList ) { FunctionBody }
PropertyName :
IdentifierName
StringLiteral
NumericLiteral
PropertySetParameterList :
Identifier

好吧,考虑以下 ObjectLiteral:{prop: 'prop'}。因此我们有 {PropertyName: AssignmentExpression} 形式的文字。现在很明显 'prop'AssignmentExpression。通过来自 sec 11.13 的定义, AssignmentExpression

AssignmentExpression :
ConditionalExpression
LeftHandSideExpression = AssignmentExpression
LeftHandSideExpression AssignmentOperator AssignmentExpression

问题:

为什么 'prop'AssignmentExpression?没有 AssignmentOperator= 并且 'prop' 肯定不是 ConditionalExpression

最佳答案

AssignmentExpression 几乎可以表示语言中的任何表达式,除了使用逗号运算符/标点符号的表达式。

基本上,产生式规则具有运算符优先级和结合性。

 AssignmentExpression 
=> ConditionalExpression (11.13)
=> LogicalORExpression (11.12)
=> LogicalANDExpression (11.11)
=> BitwiseORExpression (11.10)
=> BitwiseXORExpression (11.10)
=> BitwiseANDExpression (11.10)
=> EqualityExpression (11.10)
=> RelationalExpression (11.9)
=> ShiftExpression (11.8)
=> AdditiveExpression (11.7)
=> MultiplicativeExpression (11.6)
=> UnaryExpression (11.5)
=> PostfixExpression (11.4)
=> LeftHandSideExpression (11.3)
=> NewExpression (11.2)
=> MemberExpression (11.2)
=> PrimaryExpression (11.2)
=> Literal (11.1)
=> StringLiteral (7.8)
=> ' SingleStringChars(opt) ' (7.8.4)

注意我们越深入,优先级越高。您可能已经知道 *优先级高于 +- , 例如。在语法中指定优先级的一种非常常见的方法是为每一层运算符制定一个产生式规则,具体地说(例如)“加法表达式”是一个或多个由 + 分隔的“乘法表达式”。或 - .给定这样的规则,解析器必须先处理乘法子表达式,然后才能尝试生成加法或减法表达式。

关于javascript - 理解 JavaScript 中的对象初始化器符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20691972/

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