Four static scoping violations in ES5 sloppy

Andreas Rossberg rossberg at
Mon Mar 18 09:53:09 PDT 2013

On 18 March 2013 17:48, Brendan Eich <brendan at> wrote:
> Andreas Rossberg wrote:
>> On 18 March 2013 17:32, Mark S. Miller<erights at>  wrote:
>>> And why does ES5/strict impose these restrictions, when they are not
>>> necessary for the formal criterion?
>>> Because ES5 strict mode, being an opt-in, gave us a rare opportunity to
>>> clean things up in preparation for yet better scoping in ES6. I'm pleased
>>> to
>>> report that it mostly turned out that way. Because of #1 and #3, ES5
>>> strict
>>> code will be easier to refactor into ES6 modules, where the global object
>>> is
>>> finally not on their scope chain. At the time we did this, we didn't
>>> anticipate this specific aspect of ES6, but took the opportunity to clear
>>> the ground.
>> Maybe I misunderstand what you mean, but unfortunately, the global
>> object will remain at the top of the scope chain in ES6, even with
>> modules (though complemented with a lexical environment for new
>> binding forms). We shied away from fixing that mistake.
> Don't break the web.
> Versioning is an anti-pattern.
> I don't think "shied away" is accurate. We couldn't fix that mistake.

I think we could have fixed it for modules. Whether that would have
been worth it I don't know.


More information about the es-discuss mailing list