Patterns in parameter declarations: irrefutable?

Brendan Eich brendan at mozilla.com
Wed Mar 20 14:45:46 PDT 2013


The proposal we accepted, written by Andreas at 
http://wiki.ecmascript.org/doku.php?id=harmony:refutable_matching, seems 
clear. Patterns are refutable without an extra ? annotation. Andreas is 
using prefix-?, note well.

/be

Axel Rauschmayer wrote:
> Are patterns in parameter declarations irrefutable? In other words, 
> given:
>
>     function foo({ opt1 }) { return opt1 }
>
> What happens if we call foo()?
>     1. An exception is thrown
>     2. undefined is returned
> I’d expect (2). If opt1 had a default value, I’d expect that value to 
> be returned.
>
> What happens if we call foo({})?
>     1. An exception is thrown
>     2. undefined is returned
>
> I’m asking, because I’ve seen the pattern
>
>     function foo({ opt1 = 3 } = {}) { return opt1 }
>
> If explicitly marking something as irrefutable is necessary, I’d prefer:
>
>     function foo({ opt1 = 3 }?) { return opt1 }
>
>
> It’s a bit of a shame that destructuring and parameter declarations 
> diverge, but I guess it can’t be helped.
>
> Axel
>
> -- 
> Dr. Axel Rauschmayer
> axel at rauschma.de <mailto:axel at rauschma.de>
>
> home: rauschma.de <http://rauschma.de>
> twitter: twitter.com/rauschma <http://twitter.com/rauschma>
> blog: 2ality.com <http://2ality.com>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss


More information about the es-discuss mailing list