Exception handling vs. hasNext()

Brendan Eich brendan at mozilla.org
Mon Nov 19 11:22:28 PST 2007

On Nov 19, 2007, at 6:45 PM, P T Withington wrote:

> On 2007-11-19, at 12:40 EST, Brendan Eich wrote:
>> This item iteration case has no more concise form analogous to for-
>> each-in, because if ES4 were always to map:
>> for (let [k, v] in map) ...
>> to:
>> for (let [k, v] in map.iterator::getItems()) ...
>> it would wrongly preempt destructuring of arbitrary properties from
>> the value returned by the default iterator
> Say, if we don't waste parens on union types, what's wrong with:
> for (let (k, v) in map) ...

Union types are irrelevant in value expressions anyway, but group  
assignment was rejected in favor of destructuring (based on Opera  
precedent). See


Consider that the implementation of a "group" or "tuple" iterator  
will return [k, v] or [s, v, o]. The array destructuring syntax  
mimicks array initialiser syntax. Same goes for object destructuring,  
with a convenient shorthand:

   let {p: a, q: b} = o   // bind a = o.p and b = o.q

When you want the bound names to be the same as the destructured  
property names, use the shorthand:

   let {p, q} = o

Since we're not adding tuples as a distinct type expressed using  
parentheses, the let [k, v] form remains.


More information about the Es4-discuss mailing list