Maybe ban holes, then... (was: Re: lexical for-in/for-of loose end)

Allen Wirfs-Brock allen at wirfs-brock.com
Thu Feb 2 12:07:03 PST 2012


On Feb 2, 2012, at 11:49 AM, Herby Vojčík wrote:

> 
> 
> Allen Wirfs-Brock wrote:
>> That said, I'd hate to see things like:
>> 
>> [,,,,,x] = someArray;
>> 
>> and even
>> [a,,y] = someArray;
>> 
>> can be easily missed.
>> 
>> It isn't clear to me that we are doing ES programmers (especially those
>> with poor eyesight) a favor by allowing such expressions. What is the
>> evidence with JS1.7 up. How much usage do we see of such holes?
> 
> If
> 
>  {"5":x} = someArray;
> 
> and
> 
>  {"0":a, "2":y} = someArray;
> 
> would be possible, there is probably little need for holes. In case of

+1

It isn't just possible, it is already specified as valid. and you don't need the quotes around the array indices.  But you need a set of params to deal with the expression statement can't start with { problem.  This wouldn't be the case for binding position destructuring.

({5:x} = someArray);
({0:a, 2:y} = someArray);
> 
>  [a,b,c,d,,f] = someArray;

[a,b,c,d,...{1:f}] = someArray;

the above works for de-structuring asignments (where each destructuring element including ... targets a LHS expression} but not for binding forms where ... must be followed by an identifier. I suppose we could allow BindingPattern instead of BindingIdentifier after the ... but maybe that is a step too far??


> 
> one could always use (some conventional) anon-var, like _ (from Prolog):
> 
>  [a,b,c,d,_,f] = someArray;
> 
> Herby
> 



More information about the es-discuss mailing list