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