On Jul 10, 2008, at 6:01 PM, Waldemar Horwat wrote: > The key criterion here is whether you can come up with a language > that makes sense. None of the existing behaviors make sense > because they would make 'function' hoist differently from 'const' > hoist differently from declaring other kinds of things in ES4, > etc., with the only way of fixing it being introducing yet more > ways of declaring things. The net result would be gratuitously > hostile to everyone in the long term.
Agreed. On the other hand, Maciej is probably right [1] that a non-trivial amount of web content depends on intersection semantics today, loading scripts under the default version (no type or else one of the version-free javascript types). This is why I think opt-in versioning is required to change the meaning of a function definition in a block. /be [1] http://bugs.webkit.org/show_bug.cgi?id=13790 is about a script at starcraft2.com that once looked like this: if (ie||ns6) //var tipobj = document.getElementById("dhtmltooltip"); function ietruebody(){ Someone carelessly commented out the consequent, making the if (ie|| ns6) govern the definition of function ietruebody without bracing that definition. In no proposed ES3.1 or ES4 would this be legal. Anyway, the error has since been fixed, and last I looked, the page did this: //if (ie||ns6) //var tipobj = document.getElementById("dhtmltooltip"); function ietruebody(){ See view-source:http://www.starcraft2.com/js/tooltip.js. I'm interested in learning of more sites that seem to depend on intersection semantics. Please post URLs to the lists. _______________________________________________ Es4-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es4-discuss
