On 14.04.2011 23:40, Sam Tobin-Hochstadt wrote:
On Thu, Apr 14, 2011 at 3:29 PM, Dmitry A. Soshnikov
<[email protected]>  wrote:

But these globals won't be accessible to scripts that have already been
compiled; only to scripts that are subsequently compiled and evaluated, e.g.
via ModuleLoader.eval.
Which again seems as in chaise of efficiency, let's take away (a little of)
convenience from a user.
This isn't about efficiency at all!

The reason that Dave and I have worked hard to make modules lexically
scoped, of which this is a part, is so that when you look at a
program, you can understand what it does.  This is a fundamental part
of programming, and not having a clear binding structure in your
language makes it much harder.

Sometimes, this makes your program more efficient, too, because the
compiler understands your program better for the same reasons that you
can understand your program more easily.  But that really isn't the
point.

Actually, ECMAScript is already lexically scoped language (in respect of closures). I think there's a mess with treating a possibility of creating a binding at runtime with the dynamic scope. Dynamic scope (http://bit.ly/hz7tT2 -- just for interested) is an early design flow in PLT backing to Lisp invention times (where language authors have no much experience). Perl e.g. still has both -- dynamic and static scopes. But JS has/had lexical scope.

Yes, `with` and `eval` (direct, non-strict) _are_ the features which brings dynamics to the static scope of ES. And I always thought (and it seems quite logical) that the direct lexical mapping of ids (which is the reason of disallowing of creating of runtime bindings) is exactly to improve the identifier resolution and technically it's the main reason. Avoiding object to represent a scope and avoiding a scope chain consisting of these object is the reason of providing direct map of "variable name : direct address" which (theoretically?) is accessed in O(1).

But, I think it's a kind of off-topic in this thread, though, feel free to talk on it (probably in PM) if there's a need ;)

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

Reply via email to