I am trying to figure out if it is possible to handle multiple levels of default parameters with destructuring. Since it is not easy to explain with words, here is a step-by
what about
function fn3({foo = 'Foo', bar={} } = {}) { const {quux = 'Quux', corge = 'Corge'} = bar; console.log(foo, quux, corge); } fn3(); // Foo Quux Corge fn3({foo: 'Quux'}); // Quux Quux Corge fn3({bar: {quux: 'Baz'}}); // Foo Baz Corge fn3({foo: 'Quux', bar: {corge: 'Baz'}}); // Quux Quux Baz