Refutable destructuring

Axel Rauschmayer axel at
Fri Aug 9 14:54:30 PDT 2013

AFAICT, there is no current consensus on whether destructuring assignment is refutable by default or not:

Could we make destructuring assignment fail soft and introduce a marker for refutable parts of a pattern (e.g. a prefix `!`):

    let { !a: foo, b: bar } = { a: 1 };  // ok: foo = 1, b = undefined
    let { !a: foo, b: bar } = { };  // exception

This would have one advantage: It would be possible to bring this operator to parameter declarations (allowing one to declaratively specify a minimum arity). Then destructuring assignment and parameter handling would work very similarly.

    function bla(!mandatoryArg, optionalArg1, optionalArg2 = 123) {


Dr. Axel Rauschmayer
axel at


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list