On Tue, Sep 11, 2012 at 1:36 AM, Brendan Eich <span dir="ltr"><<a href="mailto:brendan@mozilla.com" target="_blank">brendan@mozilla.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">Dmitry Soshnikov wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
var FOO = 42;<br>
function bar(x, y = FOO + z) { var z = 10; } // Error .. ?<br>
</blockquote>
<br></div>
Translating to JS as it is:<br>
<br>
  var FOO = 42;<br>
  function bar(x, y) {<br>
    if (y === void 0) y = FOO + z;<br>
    var z = 10;<br>
  }<br>
<br>
No error expected, undefined hoisted z used in FOO + z resulting in y defaulting to NaN if y is not passed or given actual undefined value in a call.<div class="im"><br></div></blockquote><div><br>Ah, OK, so then it's just evals as a casual local var/parameter (in activation + bar.[[Scope]]) and that's it. And there probably will not be a confusion.<br>
 <br>Yes, this one may be better than just outer scope. Sorry, I thought about some more complicated stuff (first outer, then inner). If this is the same as a casual local var resolutions, then it's OK.<br><br></div>Dmitry<br>
</div>