具有多个变量类型的ES6解构赋值

时间:2016-06-20 22:03:29

标签: javascript ecmascript-6

我有一个返回5个对象的函数,我想使用const声明其中4个,使用let声明其中1个。如果我想要使用const声明所有对象,我可以这样做:

const { thing1, thing2, thing3, thing4, thing5 } = yield getResults();

我目前的解决方法是:

const results = yield getResults();

const thing1 = results.thing1;
const thing2 = results.thing2;
const thing3 = results.thing3;
const thing4 = results.thing4;

let thing5 = results.thing5; 

但是我想知道解构分配是否允许你更优雅地做到这一点。

就我所见,MDN或stackoverflow上没有提及这个问题。

2 个答案:

答案 0 :(得分:6)

无法执行同时初始化letconst变量的结构。但是const的分配可以减少到另一个结构:

const results = yield getResults()

const { thing1, thing2, thing3, thing4 } = results

let thing5 = results.thing5

答案 1 :(得分:6)

您仍然可以单独使用解构:

const results = yield getResults();
const { thing1, thing2, thing3, thing4} = results;
let   { thing5 } = results;

或者,可以做

let thing5;
const { thing1, thing2, thing3, thing4 } = { thing5 } = yield getResults();

但我想应该避免减少代码的WTF /分钟。