ES5 Strict Mode
- Assignment to an undeclared variable isn't allowed. Normally, assignment to an undeclared variable sets it in the global scope which is generally accepted as very bad so this is a great feature for strict mode to have.
- Trying to delete things that cannot be deleted throws an error in strict mode (silently fails normally).
- eval (cannot be reassigned, overridden, or used as a variable or property name and can't introduce new variables to the scope. (We've seen before how there are better choices than using eval() for general parsing).
- The with keyword is removed in strict mode (because it is seen as having many bad characteristics).