Would using (...args) incur a performance penalty and impair
optimization since the argument list has to be an array now? Or is
that still better than using 'arguments.length'? Enforcing arity is a
common enough (and important, IMO) pattern that I'd be wary of doing
it using a pattern that is going to slow everything down. Something
that makes every call create garbage seems like a likely candidate to
do that.

-kg

On Sat, Mar 16, 2013 at 5:24 PM, Axel Rauschmayer <a...@rauschma.de> wrote:
> On Mar 17, 2013, at 1:17 , Allen Wirfs-Brock <al...@wirfs-brock.com> wrote:
>
> If you need to do arity analysis of parameter but also what to apply default
> values, destructuring, etc I would do the following:
>
> Instead of
>    function ([a,b], c,d=5, ...rest) {...}
> do
>    function (...args) {
>        if (args.length <3) throw Error("too few arguments");  // (*)
>        let [[a,b], c,d=5, ...rest] = args;  //probably need some ?'s in
> there, but I haven't internalized the details of the new pattern matching
> yet.
>    }
>
>
> Nice, I forgot about rest parameters. You’d still get an exception from
> matching if you omitted line (*), right?
> Shame that we can’t have the destructuring semantics for parameters.
>
> --
> Dr. Axel Rauschmayer
> a...@rauschma.de
>
> home: rauschma.de
> twitter: twitter.com/rauschma
> blog: 2ality.com
>
>
> _______________________________________________
> es-discuss mailing list
> es-discuss@mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to