'Object destructuring: Assign null values in one line

Assuming I have an object like this

foo = {
    a: 1,
    b: 2,
    c: 3
};

I would destructure it this way

const {a, b, c} = foo;

However, what, if the keys a, b and c do not exist?

foo = null;

This won't work then

const {a, b, c} = foo;

I would have to do something like

let a, b, c;

if(foo) {
    a = foo.a;
    b = foo.b;
    c = foo.c;
};

Is there a way to do this in one line? Something like

 const {a, b, c} = foo ? foo : null; // this is not working

null is not an object. (evaluating '_ref2.a')



Solution 1:[1]

It will work like you might expect, the variables a b and c will be created with the value of undefined. this is the fallback when also trying to access a property which doesn't exist on a certain object.

const foo = {};
console.log(foo.a); // undefined

const {a, b, c} = foo;

console.log(a); // undefined
console.log(b); // undefined

console.log(d); // Uncaught ReferenceError: d is not defined

Solution 2:[2]

What about destructuring default parameters? If foo could be undefined set = foo || {} in destructuring to avoid exception

let foo = {};
const {a = null, b = null, c = null} = foo;

console.log('a:', a);
console.log('b:', b);
console.log('c:', c);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ran Turner
Solution 2