Porting code to ES5 standards mode scripts
ES5 standards mode catches errors that compatibility mode allows.
Consider the following behavior changes when porting code from existing scripts to new scoped scripts using ES5 standards mode:
- ECMAScript5 evaluates the term
new Boolean(false)to true. In compatibility mode, it evaluated to false. - ECMAScript5 throws an EcmaError when a non-existent property is referenced. In compatibility mode no error was thrown.
- ECMAScript5 throws an EcmaError when a non-existent function is called. In compatibility mode, no error was thrown.
- ECMAScript5 correctly handles new lines. In the past, a newline character after a comment was recognized, which is wrong. In this example, in compatibility mode, all three functions are called. In ECMAScript5, only the first
function is called.
var expr = doFoo(); // do foo doBar(); // do bar finish(); // all done eval(expr); - ECMAScript5 correctly handles postfix increment and decrement. In this example, in compatibility mode, the variable x gets the incremented value, which is
wrong.
var x = gr.limit++;