在解构赋值语法时如何使用特殊字符(例如连字符)?

时间:2019-06-05 13:39:50

标签: javascript spread-syntax es2018

我很好奇为什么这似乎是不可能的:

const {a, b, 'special-one'} = { a:1, b:2, 'special-one': 3 };
// output => missing : after property id

是否有可能在将来的ES版本中找到该语法?

感谢您的灯光:)

2 个答案:

答案 0 :(得分:3)

special-one不能为变量名。因此,您需要使用另一个名称,例如specialOne。在键名后面使用:作为新变量名。

const {a, b, 'special-one':specialOne} = { a:1, b:2, 'special-one': 3 };
console.log(specialOne)

在上述情况下,您使用纯字符串作为键名。但是,如果有表达式,则需要使用[]

let keyName = 'special-one'

const {a, b, [keyName]:specialOne} = { a:1, b:2, 'special-one': 3 };
console.log(specialOne)

答案 1 :(得分:3)

在destruct语句中重命名变量,您的名称中不能包含带连字符的变量。您可以使用以下语法重命名,请参见MDN: Assigning to new variable names

  

可以从对象中解压缩属性并将其分配给变量   名称与对象属性的名称不同。

const {
  a,
  b,
  'special-one': specialOne
} = {
  a: 1,
  b: 2,
  'special-one': 3
};

console.log(specialOne);