使用嵌套对象和默认值进行解构

Jos*_*igo 9 javascript declaration destructuring ecmascript-6

我正在使用解构来声明一些像这样的变量:

const { a, b, c } = require('./something'),
    { e = 'default', f = 'default'} = c;
Run Code Online (Sandbox Code Playgroud)

有没有办法把它变成单行?我尝试过类似的东西:

const { a, b, c = { e = 'default', f = 'default'} } = require('./something');
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

SyntaxError:无效的简写属性初始值设定项

Mic*_*ski 12

只需替换=::

const {a, b, c: {e = 'default', f = 'default'}} = require('./something')
Run Code Online (Sandbox Code Playgroud)

演示:

const { a, b, c: { e = 'default', f = 'default'} } = {a: 1, b: 2, c: {e: 3}}
console.log(`a: ${a}, b: ${b}, e: ${e}, f: ${f}`)
Run Code Online (Sandbox Code Playgroud)

它打印:

a: 1, b: 2, e: 3, f: default
Run Code Online (Sandbox Code Playgroud)


Evi*_*nta 11

如果对象中没有c,则上述代码将不起作用

const { a, b, c: { e = 'default', f = 'default'}} = {a: 1, b: 2}
console.log(`a: ${a}, b: ${b}, e: ${e}, f: ${f}`)
Run Code Online (Sandbox Code Playgroud)
这将打印出错误.完成后,您可以将其设为默认的"= {}"

const { a, b, c: { e = 'default', f = 'default'} ={} } = {a: 1, b: 2}
console.log(`a: ${a}, b: ${b}, e: ${e}, f: ${f}`)
Run Code Online (Sandbox Code Playgroud)