Suggestions for Set

Jason Orendorff jason.orendorff at
Wed Oct 3 08:24:49 PDT 2012

On Wed, Oct 3, 2012 at 9:47 AM, Erik Arvidsson <erik.arvidsson at> wrote:
> On Wed, Oct 3, 2012 at 3:24 AM, Andreas Rossberg <rossberg at> wrote:
>> On 3 October 2012 05:38, Brendan Eich <brendan at> wrote:
>>> Which is more important, iterating over holes (preserved if possible), or
>>> skipping them and therefore spreading array-likes but not iterables?
>> I, for one, couldn't care less about holes. We shouldn't compromise
>> any useful feature just for the sake of preserving some array hole
>> craziness.
> Filling in holes with undefined seems like the right thing to do.
> People do not depend on holes.
> Having Array.prototype. at iterator skip holes is bad because we don't
> have the index so we don't know that anything was skipped.

I agree. Firefox currently fills holes in with undefined:
  js> var a = [1,,,,2];
  js> [...a]
  [1, undefined, undefined, undefined, 2]

Of course we'll eventually implement whatever TC39 specifies, and I
don't think it matters *too* much; but I like this behavior because

* the spread syntax just uses the iteration protocol;

* it lets developers continue to ignore any holes they might have in
their arrays (that is, it doesn't "squeeze out" the holes, which those
developers might find astonishing--of course if they use .sort() or
.forEach() on that array, they'll be astonished anyway).


More information about the es-discuss mailing list