Array iterator questions

Brendan Eich brendan at
Sat Dec 1 21:58:37 PST 2012

Jason Orendorff wrote:
> 1. The current draft spec has Array.prototype.@@iterator() behaving 
> like .values(), so:
>     for (x of ["a"])
>         print(x);
> would print the pair ["0", "a"].
> The proposal had Array iterators producing values only by default. Why 
> the change?

This came up two days ago at the TC39 meeting. It's a drafting error.

> (It seems like it could be a typo, or it could be motivated by a 
> desire for consistency across all collections. If the latter, Map 
> should change, not Array.)

There is some desire, which motivated Allen's 
Array.prototype.{keys,values,items} additions in the latest draft, to 
have self-polymorphic method dispatch for implementing {keys,values,items}.

This led to a discussion that concluded by separating the method naming 
scheme and standard troika (and Andreas Rossberg proposed entries not 
items, which everyone thought better), from the generic 
object-reflection function troika that return iterators for property 
keys, values, and [key, value] pairs. We argued about whether the two 
name-troikas should match, and I think ended up allowing for this.

Dave had a suggestion for adding a bit of "dict" veneer to the generic 
functions in a standard module, but I'll let him 'splain that.

> 2. According to, the iterators produced by 
> Array.prototype.keys and .items will expose the index values as 
> strings. Why strings? Don't numbers make more sense?

Agreed these should not coerce to string.


> -j
> _______________________________________________
> es-discuss mailing list
> es-discuss at

More information about the es-discuss mailing list