On Jan 3, 2012, at 12:28 PM, Gavin Barraclough wrote:

> On Jan 3, 2012, at 12:18 PM, Brendan Eich wrote:
> 
>> Maybe. We tried in 2006-2007 and ran into at least this:
>> 
>> https://bugzilla.mozilla.org/show_bug.cgi?id=351515
>> 
>> where 'yield' was used as a parameter name. I dimly recall 'let' in the wild 
>> but may be misremembering. Perhaps out of paranoia we made both 'let' and 
>> 'yield' require version opt-in.
>> 
>> The site that used 'yield' has since been updated to avoid using 'yield'. So 
>> we could try again to reserve 'let' unconditionally. Heaven knows I've been 
>> yapping about 'let' as the new 'var' long enough to warn most developers 
>> away from it!
>> 
>> I discussed this on IRC briefly with Oliver, who seemed game. The only issue 
>> I see is that nightly builds (WebKit, Chrome, Firefox) don't get enough use 
>> to do other than find true positives. It would be good to find such 'let' 
>> usage in the wild, of course, but finding nothing won't give us a green 
>> light, just lack of a red light.
> 
> Why unconditionally reserve let? - would it not make more sense to handle 
> this in a contextual fashion if we can do so? – if so, we could introduce 
> 'let' without any backwards compatibility risk, and retain the option to 
> promote it to a keyword at a later date.

You're proposing that we require 'let' be only at the start of statements? If 
so, then destructuring is problematic:

  foo();
  let [x] = y;

Did that last line destructure the property named '0' of the object denoted by 
y into a let-bound x, or was it old, pre-ES6 code that stored y into the x'th 
element of an object denoted 'let'? In either case the 'let' is at the start of 
a statement.

/be

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

Reply via email to