On Apr 19, 2010, at 4:27 PM, Peter van der Zee wrote:
Basically, this means we cannot introduce new language constructs or syntax because older implementations will trip over the code with no way to recover. Furthermore, for various reasons it seems "feature detection" is favored over version detection.
When you want the new syntax, though, you're going to have to use opt- in versioning (see RFC4329).
ES5 introduced the concept of directives, using perfectly fine fallback with no side effects. This was, as far as the above goes, perfect. Older implementations couldn't possibly trip over it since a string literal without anything else has no visible side effects.
I should point out again that "use strict"; changes runtime semantics involving eval and arguments in ES5, it does not merely prevent programs from getting to runtime (i.e., it is not just stricter syntax, e.g. forbidding 'with').
This means that if you "use strict" you have to test your code in pre- ES5 and ES5-or-above implementations, to be sure you're not counting on the ES5 changes.
Usually you won't have a problem, but testing is the only way to be sure, if you are using eval and/or arguments in your strict code.
/be _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

