<div class="gmail_quote">On 12 June 2012 17:21, Felix Böhm <span dir="ltr"><<a href="mailto:esdiscuss@feedic.com" target="_blank">esdiscuss@feedic.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div>As written before:</div><div><br></div><div><font face="courier new, monospace">function foo(a, b, ...others, c){ … }</font></div><div><br></div><div>behaves the same as</div><div><br>

</div><div><font face="courier new, monospace">function foo(a, b, ...others){</font></div><div><font face="courier new, monospace">  var c = others.pop();</font></div><div><font face="courier new, monospace">}</font></div>

</blockquote><div><br></div><div>Sadly, it's not as simple to emulate</div><div><br></div><div><font face="courier new, monospace">function foo(a, b, ...others, c, d) {</font></div><div><font face="courier new, monospace">}</font></div>

<div><br></div><div>...using pop. But obviously it can be done one way or another.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div></div><div>

When the number of parameters following the rest parameter is greater or equal the number of passed arguments, the rest parameter is an empty array and the parameters get assigned in order until there are no more arguments. Unassigned parameters default to <font face="courier new, monospace">undefined</font>.</div>



<div><br></div><div>When the number of arguments is greater than the number of parameters following the rest parameter, then the first<font face="courier new, monospace">(argument-number - parameter-number)</font> arguments are passed as the rest parameter.</div>

</blockquote><div><br></div><div>Yes, the rule doesn't seem particularly complicated.</div><div><div><br class="Apple-interchange-newline">I've definitely seen (and very occasionally used) this sort of thing in the real world, though not nearly to Node's extent. The beginning and end of the args list are the only fixed points.</div>

</div><div><br></div><div>On 12 June 2012 17:21, Allen Wirfs-Brock <span dir="ltr"><<a href="mailto:allen@wirfs-brock.com" target="_blank">allen@wirfs-brock.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div style="word-wrap:break-word"><div>For ES6 we have the most important use cases covered. If experience  with it suggests that some generalizations would add real value we can consider them for future editions.</div><span class="HOEnZb"><font color="#888888"></font></span></div>

</blockquote></div><div><br></div><div>Very true, no reason it couldn't be loosened up in ES7 or whatever. And yet, if not yet implemented in its current form (I have no idea what the extent of implementation is), the complexity increment does not seem large. As Felix points out, the algorithm isn't exactly complicated.</div>

<div><br></div><div>-- T.J.</div></div>