Javascript 可以同时使用速记属性名和计算属性名吗?

Javascript 可以同时使用速记属性名和计算属性名吗?,javascript,ecmascript-6,Javascript,Ecmascript 6,是否可以将速记财产名称(ES2015)与计算财产名称(也称为ES2015)结合使用?比如说 const a = 'foo'; const o = { [a], } > o > { "foo": "foo" } 不,这是不可能的。不允许将计算属性名称与速记一起使用。具体而言,ObjectLiteral由PropertyDefinitionList组成。PropertyDefinition列表由PropertyDefinitions组成: 对象初始值设定项 语法 O

是否可以将速记财产名称(ES2015)与计算财产名称(也称为ES2015)结合使用?比如说

const a = 'foo';
const o = {
    [a],
}
> o
> {
    "foo": "foo"
  }

不,这是不可能的。不允许将计算属性名称与速记一起使用。具体而言,
ObjectLiteral
PropertyDefinitionList
组成。
PropertyDefinition列表由
PropertyDefinition
s组成:

对象初始值设定项 语法

ObjectLiteral :
  { }
  { PropertyDefinitionList }
  { PropertyDefinitionList, }

PropertyDefinitionList :
  PropertyDefinition
  PropertyDefinitionList, PropertyDefinition

PropertyDefinition :
  IdentifierReference
  CoverInitializedName
  PropertyName : AssignmentExpression
  MethodDefinition
支持对象文本中计算属性的特定语法是
PropertyName:AssignmentExpression
,因为
PropertyName
定义为:


因此,语法只支持
[computedProperty]:value
,因为只有
属性名称:赋值表达式
是语法的一部分,而不是
属性名称本身。

不,这是不可能的。不允许将计算属性名称与速记一起使用。具体而言,
ObjectLiteral
PropertyDefinitionList
组成。
PropertyDefinition列表由
PropertyDefinition
s组成:

对象初始值设定项 语法

ObjectLiteral :
  { }
  { PropertyDefinitionList }
  { PropertyDefinitionList, }

PropertyDefinitionList :
  PropertyDefinition
  PropertyDefinitionList, PropertyDefinition

PropertyDefinition :
  IdentifierReference
  CoverInitializedName
  PropertyName : AssignmentExpression
  MethodDefinition
支持对象文本中计算属性的特定语法是
PropertyName:AssignmentExpression
,因为
PropertyName
定义为:


因此,语法只支持
[computedProperty]:value
,因为只有
PropertyName:AssignmentExpression
是语法的一部分,而不是
PropertyName
本身。

我不理解您的问题。您是否希望输出与给定的不同?如果是的话,应该是什么?我想他正在寻找规范中规定这一部分不会像他期望的那样被解析的部分。我会设法找到的。这是我能想到的最接近的:
const o={[a]:a,}
我不明白你的问题。您是否希望输出与给定的不同?如果是的话,应该是什么?我想他正在寻找规范中规定这一部分不会像他期望的那样被解析的部分。我会设法找到的。这是我能想到的最接近的:
const o={[a]:a,}