JS/ES6: Разрушение undefined

Я использую деструктурирование следующим образом:

const { item } = content
console.log(item)

Но как мне обрабатывать content === undefined - который выдает ошибку?

"Старый" способ будет выглядеть так:

const item = content && content.item

Итак, если content - undefined → item, также будет undefined.

Можно ли сделать что-то подобное, используя деструктурирование?

Ответ 1

Вы можете использовать оценку короткого замыкания, чтобы задать значение по умолчанию, если content является ложным значением, обычно undefined или null в этом случае.

const content = undefined
const { item } = content || {}
console.log(item)                       // undefined

Ответ 2

Принятый ответ не работает для действительно неопределенных значений, которые не были установлены const content = undefined. в таких случаях это будет работать:

const { item } = (typeof content !== 'undefined' && content) || {}
console.log(item)