2016-08-20 29 views
4

我用解構宣佈一些像這樣的變量:解構與嵌套對象和默認值

const { a, b, c } = require('./something'), 
    { e = 'default', f = 'default'} = c; 

有沒有一種方法,使之成爲一條線嗎? 我已經試過類似:

const { a, b, c = { e = 'default', f = 'default'} } = require('./something'); 

但它給我一個錯誤:

SyntaxError: Invalid shorthand property initializer

回答

9

只需更換=:

​​

演示:

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}`)

它打印:

a: 1, b: 2, e: 3, f: default 
4

如果對象沒有下,在它

const { a, b, c: { e = 'default', f = 'default'}} = {a: 1, b: 2} 
 
console.log(`a: ${a}, b: ${b}, e: ${e}, f: ${f}`)
這將打印出一個錯誤上面的代碼將無法正常工作。 完成,你可以作爲一個簡單的 「= {}」 爲默認

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