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
[email protected]
https://mail.mozilla.org/listinfo/es-discuss