(or They Get it Right in Version 5)
ECMAScript 5 finally has strict mode. JavaScript's strict mode forces static function scoping and variable declaration, enforces read-only properties, forbids often-confusing octal literal declarations, and variable name collisions.
In other words, strict mode will help identify common coding mishaps which can cause unintended consequences and painfully unnecessary debugging sessions. Disciplined and careful coders can probably get away with writing sloppy code, but strict mode helps everyone write slightly better code.
If this reminds you of Perl 5's strict pragma, perhaps in 16 years (Perl 5.000 released on 17 October 1994) ECMAScript's strict mode will be mostly uncontroversial among JavaScript programmers.
Unfortunately, it also disables access to caller, meaning that there is now no facility for generating a stack trace. There's been some mumbling about making a new API to show the user a stack trace, but so far I think it's an annoying loss. The rest of the changes are incredibly valuable, though.
Very cool! I like that you can also use it inside of a function, so my libraries can incrementally migrate from sloppy to strict.