Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Šime Vidas
In the talk Changes to JavaScript, Part 1: EcmaScript 5, Mark Miller states that ES5 Default contains four static scope violations (direct link: http://www.youtube.com/watch?v=Kq4FpMe6cRst=42m53s). He also states that ES5 Strict corrects these violations, making ES5 Strict is a statically scoped

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread François REMY
if “ooops” belong the the global scope of from the function’s scope (we can only find that out at runtime). From: Šime Vidas Sent: Wednesday, October 03, 2012 6:41 PM To: es-discuss@mozilla.org Subject: Is ES5 Strict a fully statically scoped language? In the talk Changes to JavaScript, Part 1

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Gavin Barraclough
On Oct 3, 2012, at 10:05 AM, François REMY wrote: In non-strict ES, the “t” function may be eval, and eval could add a “oops” variable in the parent function getOoops. I don't believe this is true. This does not constitute a direct call to eval (15.1.2.1.1), and as such the eval will take

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread François REMY
Indirect eval is something introduced for ES5 Strict only, I believe. Try the following code in your browser’s console, and you may be surprised: ((function(t) { t(var body=true); return function() { return body; }; })(eval))()) ___ es-discuss

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Gavin Barraclough
On Oct 3, 2012, at 12:40 PM, François REMY wrote: Indirect eval is something introduced for ES5 Strict only, I believe. Nope. See 15.1.2.1.1, no reference to strict. Here's a better example: (function(t){ var x = 'foo'; t(x = 'bar'); alert(x); })(eval) The indirect eval does not

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread François REMY
| That just puts 'body' on the window. Indee, I'm false on that one. But if you use a direct eval, you can get the same behavior in ES5, which is want I wanted to demonstrate: window.a = true; (function x(t) { eval(t); return a==window.a; })(var a=false) So in plain ES5, the scope of

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Mark S. Miller
*Subject:* Is ES5 Strict a fully statically scoped language? In the talk Changes to JavaScript, Part 1: EcmaScript 5, Mark Miller states that ES5 Default contains four static scope violations (direct link: http://www.youtube.com/watch?v=Kq4FpMe6cRst=42m53s). He also states that ES5 Strict

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Šime Vidas
at compilation if “ooops” belong the the global scope of from the function’s scope (we can only find that out at runtime). *From:* Šime Vidas sime.vi...@gmail.com *Sent:* Wednesday, October 03, 2012 6:41 PM *To:* es-discuss@mozilla.org *Subject:* Is ES5 Strict a fully statically scoped language

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Mark S. Miller
*Sent:* Wednesday, October 03, 2012 6:41 PM *To:* es-discuss@mozilla.org *Subject:* Is ES5 Strict a fully statically scoped language? In the talk Changes to JavaScript, Part 1: EcmaScript 5, Mark Miller states that ES5 Default contains four static scope violations (direct link: http

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Šime Vidas
On Thu, Oct 4, 2012 at 12:31 AM, Mark S. Miller erig...@google.com wrote: On Wed, Oct 3, 2012 at 3:16 PM, Šime Vidas sime.vi...@gmail.com wrote: On Wed, Oct 3, 2012 at 7:05 PM, François REMY fremycompany_...@yahoo.frwrote: I think that what he meant is that we know for sure in which

Re: Is ES5 Strict a fully statically scoped language?

2012-10-03 Thread Brendan Eich
You should eval an initialized var declaration of foo inside the with, and check foo's value after the with body, for real head-exploding. ;-) /be Šime Vidas wrote: Well, thank you for your excellent video. The dynamic scopes in the default language are a disaster... I've just written a short