On Feb 17, 2009, at 2:02 PM, Ian Hickson wrote:
>
> Right now ES3 assumes that there is a single global object, which is
> used
> at the top of the scope chain and that is returned for "this" in the
> global scope.
>
> It is possible to show that this is now what some browsers do:
>
> var x = 1;
> function f() { return x; }
> var global = this;
> function g() { return global.x; }
>
> // some other page's script takes references to f and g
> // browser navigates to a new page
>
> var x = 2;
>
> Now, if the other page's script calls f() and g(), it will get
> different
> results (2 and 1 respectively, if I didn't screw up the example code).
Actually it's the other way around - f() will return 1 and g() will
return 2. (I think this might have been the reason Mark thought this
example showed dynamic scoping; scope is purely lexical and reflects
original global bindings, but a persistent handle to the global object
reflects the new global object bought in by navigation.)
Regards,
Maciej
_______________________________________________
Es-discuss mailing list
Es-discuss@...
https://mail.mozilla.org/listinfo/es-discuss