On Fri, Apr 15, 2011 at 4:32 PM, Dmitry A. Soshnikov
<[email protected]> wrote:
>
> OK, what I was saying is that you mixing the terminology calling as "dynamic
> scope" the "runtime bindings". And I mentioned that the dynamic scope is
> when a binding is resolved in the respect to the _callee_, but not in
> respect of the _definition place_ (i.e. _lexical_ place in the source code).
>
> var foo = 10;
>
> function bar() {
> console.log(foo);
> }
>
> (function () {
> var foo = 20;
> bar(); // 10 in static scope, 20 in dynamic scope!
> })();
I understand how dynamic scope works. And ES5 with the mutable global
object has it:
function bar() { return foo };
bar() // error: foo is not defined
var foo = 7;
bar(); // produces 7
Lexical scope would produce the error both times.
> But I'm of course agree that avoiding of runtime bindings and allowing only
> of static bindngs (i.e. those names which directly are resolved at compile
> time and _therefore_ the direct map of their addresses can be built -- to
> avoid scope chain lookup) is good -- from both sides -- to make these errors
> as early and (as usually it is) O(1) bindings resolution approach without
> any scope chain lookup.
>
>> 2. Again, the reason that Dave and I have worked hard to avoid holes
>> in the lexical scoping of identifiers in modules is for programmers to
>> understand programs -- not for efficiency at all.
>
> Yes, it's OK, I got it.
>
>> I don't know what
>> else to say to persuade you of this, but making identifier resolution
>> fast is not "the main reason".
>
> Oh, it's not required, I got it. And I also won't persuade you, but just
> suggest this resource
> http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-35.html#%_sec_5.5.6
> (the whole book is also recommended to be read if not yet).
I first read SICP a long time ago :)
--
sam th
[email protected]
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss