Destructuring pulls values out without temporaries

Unpacking a few fields out of an options object is three or four lines of near-identical assignment at the top of every function. Destructuring does it in the parameter list, where it also documents what the function actually reads.

function request(options) {
    var url = options.url;
    var method = options.method || 'GET';
}

function request({ url, method = 'GET', headers = {} }) {
    // ...
}

Combining it with default values replaces the || fallback chain, and correctly so — || substitutes the default for any falsy value, including 0 and the empty string, whereas a destructuring default only applies to undefined. Destructuring an argument that might be undefined throws, so a top-level default of {} is usually needed too.