Four static scoping violations in ES5 sloppy

Andreas Rossberg rossberg at
Mon Mar 18 09:46:57 PDT 2013

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.


More information about the es-discuss mailing list