<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On Jul 26, 2008, at 4:03 AM, Ingvar von Schoultz wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:waldemar@google.com">waldemar@google.com</a> wrote:</div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Ingvar von Schoultz wrote:</div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><a href="mailto:waldemar@google.com">waldemar@google.com</a> wrote:</div> <blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I'm trying to keep the language relatively simple.</div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">You can't get away from supporting this:</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><span class="Apple-converted-space">    </span>{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><span class="Apple-converted-space">        </span>function a(){}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><span class="Apple-converted-space">        </span>var b = a;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><span class="Apple-converted-space">    </span>}</div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">What do you mean?<span class="Apple-converted-space">  </span>This is a syntax error in both ES3 and ES3.1.</div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">It works fine in Firefox 2, Konqueror 3, Opera 9, Internet</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Explorer 6, and server-side Rhino with JavaScript 1.6.</div></blockquote><div><br></div>Waldemar meant precisely what he wrote: ES3 and draft ES3.1 -- the specifications, not random JS implementations.</div><div><br><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">Five platforms out of five. Can you throw a syntax error here</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">and claim to be compatible?</div></blockquote><div><br></div>The implementations are not compatible. Please see the earlier es4-discuss thread with subject "Function declarations in statements" at:</div><div><br></div><div><a href="https://mail.mozilla.org/pipermail/es4-discuss/2007-March/thread.html#527">https://mail.mozilla.org/pipermail/es4-discuss/2007-March/thread.html#527</a></div><div><br></div><div><br><blockquote type="cite"><blockquote type="cite"><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font class="Apple-style-span" color="#0000DD"><br></font>It does not already exist in ES3 or ES3.1.</div> </blockquote><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">It exists on platforms as described above. I assumed that ES4</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">would be compatible.</div></blockquote><div><br></div>No, because it is impossible to be compatible with conflicting extensions to ES3 that browsers have implemented. The conflicts and undesirable intersection semantics are why ES4 proposes, and ES3.1 considered but deferred, block-scoped functions that must be direct children of braced blocks. This requires opt-in versioning, which is why ES3.1 deferred it.</div><div><br></div><div>/be</div><br></body></html>