On Feb 1, 2012, at 2:13 PM, Brendan Eich wrote:

> Allen Wirfs-Brock wrote:
>> Another loose end.
>> 
>> With the addition of for-of, for-in reverts back to always iterating over 
>> the property keys of an object as it does not support the generalized 
>> iteration protocols.  An implication of this is that using a de-structuring 
>> pattern as the iteration variable has very limited utility:
>> 
>>    for (let [c] in obj) print(c);  //print the first character of
>>    each of obj's enumerable property names
>> 
>>    for (const {length:len}  in obj) print(len);  print the length
>>    of each of obj's enumerable property names
>> 
>> 
>> Given this lack of utility, why should we allow de-structuring in this 
>> context?
> 
> These are not totally silly examples. I say when in doubt, let language 
> regularity win.
    
Well, they're at least 98% silly and these were the only even semi-plausable 
example I could think of.
> 
> We are also thereby future-friendly in case some evolution of property keys 
> becomes even more structured. I know, unlikely, but again: regularity when in 
> doubt.

In which case, it would be easy enough to allow them in the future. It's always 
easer to relax a restriction then it is to add one.

> 
>> Eliminating it arguably increases language complexity by introducing in a 
>> bit more grammar irregularity.  On the other hand, eliminating useless 
>> functionality can be seen as as simplification.
> 
> Not useless, your own examples show use-cases.
> 
>> I'm leaning towards banning destructing in for-in.
> 
> Too nannyish!

I don't really see the consistency in trying to ban the initializer in
  for (var k=42 in obj) ;
because it is a "awful, lazy-grammar-resue error".  While adding
  for (var [c] in obj) ;

I don't actually feel too strongly either way and it is actually more work for 
me to disallow the destructuring pattern.  However, I am trying to find some 
basis for consistency in the design choices we make.

Allen
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to