Allen Wirfs-Brock wrote:
On Feb 14, 2014, at 11:38 AM, Jeremy Martin wrote:

>  On further reflection, #3 does feel like trying to rewrite the past.  For 
better or worse, non-strict mode allows declarations to persist past the eval().  
And while strict mode provides a license-to-kill on behavior like that, I don't 
really see strong justification for that kind of surprise factor for let in 
non-strict mode.
> > If you're not using strict mode AND you're using eval(), the damage is arguably already done (or at least the danger already exists). Changing the behavior of let in this case feels like removing an arbitrary* foot-gun when we're already in the armory, so to speak. > > * Granted it's not completely arbitrary, since `let` is new whereas `var` is not, but hopefully you get my point.

Another consideration in the back of my mind is that there may be useful to 
implementors to knowing that let/const/class declaration are never dynamically 
added to a non-global environment.

+lots, this should be front of mind.

In a block, we want the bindings local to that block to be statically analyzable. We want no non-local mode effects. So, #3 still wins.

/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to