为何JavaScript中无需ES6方括号即可用变量作为对象属性名?
ES6对象字面量属性简写语法
这不是对象解构,而是ES6新增的对象字面量属性简写语法,具体说明如下:
- 当在对象字面量中仅写入变量名时,JavaScript会自动将变量名称作为属性名,变量的取值作为对应属性的值。例如代码中的
{x}完全等价于{x: x},前者是后者的语法糖形式。 - 这种简写和方括号属性名语法(
{[x]: 3})的核心区别在于:简写语法用变量的名称作为属性名,而方括号语法用变量的值作为属性名。比如你的示例里变量x的值是1,简写后obj的x属性值为1;如果使用方括号语法{[x]: 3},则对象的属性名会是1,对应值为3。 - 无需显式赋值的原因是,该语法本身就约定了"属性名与变量名一致时,自动复用变量值作为属性值",属于ES6为简化代码而新增的语法特性。
内容的提问来源于stack exchange,提问作者user31782
相关产品推荐
相关产品推荐

