Just to provide another way of working around it:

var empty = {}; // or even a symbol?

function splice(start = empty, count = 0, ...items) {
  if (start === empty) { ...
}


On Mon, Nov 11, 2013 at 1:22 AM, Jonas Sicking <jo...@sicking.cc> wrote:

> On Mon, Nov 11, 2013 at 2:12 AM, Allen Wirfs-Brock
> <al...@wirfs-brock.com> wrote:
> > One of the the few remaining uses of a function's 'arguments' binding is
> to
> > determine the actual number of passed arguments.  This is necessary in
> some
> > overloading scenarios where a function has different behavior when an
> > argument is completely absent then it has when undefined (or any other
> > default value) is explicitly passed in that parameter position.  That
> > situation occurs in a number of DOM APIs and even a few ES library
> > functions.
>
> I think the number is very low. I think I've heard of a total of four
> DOM functions which currently treat "not passed" as different from
> "explicitly passed undefined". And we're working on changing those so
> that the two are treated the same. Unclear if we'll be able to change
> all of them.
>
> So from the DOM point of view, I don't see a lot of reason to add
> convenience capabilities for detecting that difference.
>
> And in none of the cases in the DOM, does function.length become a
> problem. This is because in all of the cases the argument truly is
> optional, which means that .length does not include it. So for example
> for XMLHttpRequest.open you could write a JS implementation that looks
> like:
>
> function open(verb, url, ...args) {
>   let [async, username, passwd] = args;
>   if (args.length == 0) {
>     async = true;
>   }
>   ... more code here ...
> }
>
> It is surprising to me that that is not the case in the ECMAScript
> APIs, but seems like that is history.
>
> / Jonas
> _______________________________________________
> 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