Global lexical tier

Andreas Rossberg rossberg at
Thu Sep 3 21:52:18 UTC 2015

On 3 September 2015 at 20:57, Brendan Eich <brendan at> wrote:

> Andreas Rossberg wrote:
>> On 3 September 2015 at 03:50, Brendan Eich <brendan at <mailto:
>> brendan at>> wrote:
>>     I don't remember you overcoming the counterarguments about async
>>     scripts and event handlers in async-generated/written markup
>>     twisting the nested scopes unexpectedly.
>> The only cases where the scope order would make an observable difference
>> are ones that produce conflicts right now. So you'd only allow a few more
>> programs -- somewhat ill-behaved (non-deterministic) ones, but no more
>> ill-behaved than those that you can write with `var` today (or could with
>> `let` if it was a property on the global object! -- non-deterministic
>> shadowing  is still a less drastic effect than non-deterministic
>> overwriting).
> The problem is the cognitive model and load. Nothing helps
> non-deterministic loading of scripts with global effects, but making every.
> last. script! nest a fresh lexical scope means "now you have two problems".

What I mean is that in a model with mutable scope (or worse, the global
object) _declarations_ themselves become global effects. Later conflicts
can affect all code that has been loaded _before_, e.g. by smashing over an
existing binding.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list