views:

1026

answers:

2

ECMAScript 5 is in its final draft as I write this; It is due to include a strict mode which will prevent you from assigning to the global object, using eval, and other restrictions. (John Resig's Article is a good introduction.)

This magical sanity-saving mode is triggered by including the string "use strict" at the top of your file (or function.) However, in older environments, "use strict" is a no-op. If you add "use strict" and don't test it in a strict environment, you could be leaving a time-bomb of not-really-strict code that will break when it really hits a strict environment.

Which environments actually respect "use strict"?

+8  A: 

None as of now.

Raphael Speyer was working on Mozilla implementation for Rhino during this summer, and afaik, their implementation is pretty close to completion.

I know (based on info from ES-discuss list) that Microsoft is planning to include some of ES5 features into upcoming versions of IE and they might very well be working on strict mode implementation right now (as you probably know, IE8 already includes some of ES5 features, like Object.defineProperty).

There's also Google's Caja project which somewhat emulates behavior of strict mode in some of its variations (Valija, Cajita, etc).

Crockford also recently added this option to JSLint, but I'm not sure if it actually triggers any additional validations (as per ES5-strict rules).

kangax
Even worse, Speyer ran out of time and didn't implement strict mode, so even though Rhino will support most of the other ES5 features, it doesn't support strict mode. :-(
Sean McMillan
+3  A: 

The first One is in: Besen. Implemented in Delphi. I think it's stand-alone, but I'm not sure. But it does support strict mode.

Found via this compatibility table.

Sean McMillan