<br><br><div class="gmail_quote">On Wed, Oct 3, 2012 at 3:16 PM, Šime Vidas <span dir="ltr"><<a href="mailto:sime.vidas@gmail.com" target="_blank">sime.vidas@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div class="im">On Wed, Oct 3, 2012 at 7:05 PM, François REMY <span dir="ltr"><<a href="mailto:fremycompany_pub@yahoo.fr" target="_blank">fremycompany_pub@yahoo.fr</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div dir="ltr">
<div dir="ltr">
<div style="font-size:12pt;font-family:'Corbel'">
<div>I think that what he meant is that we know for sure in which scope we can 
find the property/variable. That the propery exists or not in the that scope is 
another issue.</div></div></div></div></blockquote></div><div><br>So, it doesn't matter that the global environment is dynamic (as in 
bindings can be added/removed dynamically), since it's the top-most 
environment. Only the nested (function) environments must be static, and
 if they are, i.e. if we know which bindings are defined in each 
function environment (in the scope chain), then we can safely assume 
that a name that doesn't exist in any of those function environments, 
can only either be a global binding, or a name that doesn't exist in any
 environment. Did I get this correctly?<br></div></div></blockquote><div><br></div><div>Exactly correct. Thanks for the clarification!</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div><br> <br><br><br></div><div class="im"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div style="font-size:12pt;font-family:'Corbel'">


<div>So, in the code “function getOoops(t) { t(); return function() { return 
ooops; } }” we know statically that the scope where the “ooops” variable is 
defined is the global scope. At runtime, we just need to do 
“globalScope.get(‘oops’)" to retreive the value (or throw). In non-strict ES, 
the “t” function may be eval, and eval could add a “oops” variable in the parent 
function getOoops. So, we don’t know at compilation if “ooops” belong the the 
global scope of from the function’s scope (we can only find that out at 
runtime).</div>
<div> </div>
<div> </div>
<div> </div>
<div style="BORDER-BOTTOM-COLOR:#000000;BORDER-LEFT:#000000 4px solid;BORDER-TOP-COLOR:#000000;PADDING-LEFT:5px;BORDER-RIGHT-COLOR:#000000;MARGIN-LEFT:5px">
<div style="font-size:small;font-style:normal;text-decoration:none;font-family:'Calibri';display:inline;font-weight:normal">
<div style="FONT:10pt tahoma">
<div><b>From:</b> <a title="sime.vidas@gmail.com" href="mailto:sime.vidas@gmail.com" target="_blank">Šime Vidas</a> </div>
<div><b>Sent:</b> Wednesday, October 03, 2012 6:41 PM</div>
<div><b>To:</b> <a title="es-discuss@mozilla.org" href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a> </div>
<div><b>Subject:</b> Is ES5 Strict a fully statically scoped 
language?</div></div></div></div>
<div style="BORDER-BOTTOM-COLOR:#000000;BORDER-LEFT:#000000 4px solid;BORDER-TOP-COLOR:#000000;PADDING-LEFT:5px;BORDER-RIGHT-COLOR:#000000;MARGIN-LEFT:5px">
<div style="font-size:small;font-style:normal;text-decoration:none;font-family:'Calibri';display:inline;font-weight:normal"><div>In 
the talk "Changes to JavaScript, Part 1: EcmaScript 5", Mark Miller states that 
ES5 Default contains four static scope violations (direct link: <a href="http://www.youtube.com/watch?v=Kq4FpMe6cRs&t=42m53s" target="_blank">http://www.youtube.com/watch?v=Kq4FpMe6cRs&t=42m53s</a>). 
He also states that ES5 Strict corrects these violations, making ES5 Strict is a 
statically scoped language. I don't understand how that can be true, since it is 
possible to dynamically add bindings to the global environment by creating new 
global properties (during code evaluation). Isn't this a static scope violation, 
too?<br><br>-- Šime Vidas<br>
</div><p>
</p><hr>
_______________________________________________<br>es-discuss mailing 
list<br><a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br><a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br><p>

</p></div></div></div></div></div>
</blockquote></div></div><br>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>    Cheers,<br>    --MarkM<br>