使用 属性 名称的对象解构不是有效的变量名称

Object destructuring with property names that are not valid variable names

有谁知道您是否可以在 属性 名称中使用带空格的对象解构?也许这无法完成,我意识到 JavaScript 符号不正确,但我无法更改服务器 json 响应。

var obj1 = {name: 'Mr Smith', age: 21};
//destructure
var {name, age} = obj1;
//name='Mr Smith' and age=21

这按预期工作。

但是当我有以下对象结构时,我是否可以使用对象解构?

var obj2 = {"my name": "Mr Jones", age: 22};
var {'my name', age} = obj2; 

如果这是不可能的如果我能用某种语法给变量赋值就好了,比如'as'...

var {'my name' as name, age} = obj2; //name='Mr Jones';

谢谢

您可以使用以下语法为其分配一个有效的变量名:

var {"my name": myName, age} = obj2; 

// use myName here

When I have an object with spaces in the property name can I use object destructuring or not?

是的,你可以使用解构,但你总是只能分配给标识符(变量名)。由于那些不允许空格,您不能使用 shorthand 语法,其中 属性 名称和标识符相同。

It would be nice if I could assign the variable with some sort of syntax like 'as':

var {'my name' as name, age} = obj2;

as 用于模块 imports/exports。对于普通对象——文字和解构——你使用冒号 ::

var {'my name': name, age} = obj2;