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