我有一个返回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上没有提及这个问题。
答案 0 :(得分:6)
无法执行同时初始化let
和const
变量的结构。但是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 /分钟。