Brendan Eich wrote:
> If using an uninitialized let binding is an error, then hoisting is  
> pointless except to make the statements between start of block and the  
> let declaration a dead zone for the binding name. This fits the  
> ancient, weak but not entirely worthless post-hoc rationale for var  
> hoisting (to avoid confusion among novice or inexperienced programmers  
> by making many scopes, each implicitly opened by var), but it's not  
> particularly useful.

This was our agreement from the ES4 days.  It's very useful, in that it allows 
mutually recursive lambdas.

> What's more, as discussed here and in TC39, repeated let declarations  
> for the same binding name within the same block should be allowed.  

You can't do that in ES-Harmony.  There is no way to tell if the two let 
declarations have the same type.  For orthogonality you'd also need to allow 
multiple const declarations within the same scope, and I just don't want to go 
there.

> Anything else is user- and refactoring-hostile. So the non-initial let  
> declarations for a given name in the same block would be ignored.

This is loaded language, but I can't tell how requiring there to be a unique 
point of definition for a const or let is user-hostile.

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

Reply via email to