This document is a section of the web browser standards support document. It includes detailed information about ECMAScript support in major web browsers.
ECMAScript is a language used to access and work with the DOM. It was developed as a standardized base for JavaScript and JScript.
These language constructs are used to control the flow of the program and compare and manipulate information.
| Feature | IE 6 | IE 7 | Firefox 1.5 | Firefox 2 | Firefox 3 | Opera 8.5 | Opera 9 | Safari 2 |
|---|---|---|---|---|---|---|---|---|
| Types | ||||||||
| Undefined | Y | Y | Y | Y | Y | Y | Y | ? |
| Null | Y | Y | Y | Y | Y | Y | Y | ? |
| Boolean | Y | Y | Y | Y | Y | Y | Y | ? |
| String | Y | Y | Y | Y | Y | Y | Y | ? |
| Number | Y | Y | Y | Y | Y | Y | Y | ? |
| Object | Y | Y | Y | Y | Y | Y | Y | ? |
| Basic expressions | ||||||||
| this | Y | Y | Y | Y | Y | Y | Y | ? |
| new | Y | Y | Y | Y | Y | Y | Y | ? |
| Postfix ++ | Y | Y | Y | Y | Y | Y | Y | ? |
| Postfix -- | Y | Y | Y | Y | Y | Y | Y | ? |
| , | I | I | Y | Y | Y | Y | Y | ? |
| Unary expressions | ||||||||
| delete | Y | Y | Y | Y | Y | Y | Y | ? |
| void | Y | Y | Y | Y | Y | Y | Y | ? |
| typeof | Y | Y | Y | Y | Y | Y | Y | ? |
| Prefix ++ | Y | Y | Y | Y | Y | Y | Y | ? |
| Prefix -- | Y | Y | Y | Y | Y | Y | Y | ? |
| + | Y | Y | Y | Y | Y | Y | Y | ? |
| - | Y | Y | Y | Y | Y | Y | Y | ? |
| ~ | Y | Y | Y | Y | Y | Y | Y | ? |
| ! | Y | Y | Y | Y | Y | Y | Y | ? |
| Math expressions | ||||||||
| + | Y | Y | Y | Y | Y | Y | Y | ? |
| - | Y | Y | Y | Y | Y | Y | Y | ? |
| * | Y | Y | Y | Y | Y | Y | Y | ? |
| / | Y | Y | Y | Y | Y | Y | Y | ? |
| % | Y | Y | Y | Y | Y | Y | Y | ? |
| Relational expressions | ||||||||
| == | Y | Y | Y | Y | Y | Y | Y | ? |
| != | Y | Y | Y | Y | Y | Y | Y | ? |
| === | Y | Y | Y | Y | Y | Y | Y | ? |
| !== | Y | Y | Y | Y | Y | Y | Y | ? |
| < | Y | Y | Y | Y | Y | Y | Y | ? |
| > | Y | Y | Y | Y | Y | Y | Y | ? |
| <= | Y | Y | Y | Y | Y | Y | Y | ? |
| >= | Y | Y | Y | Y | Y | Y | Y | ? |
| instanceof | Y | Y | Y | Y | Y | Y | Y | ? |
| in | Y | Y | Y | Y | Y | Y | Y | ? |
| Binary expressions | ||||||||
| & | Y | Y | Y | Y | Y | Y | Y | ? |
| ^ | Y | Y | Y | Y | Y | Y | Y | ? |
| | | Y | Y | Y | Y | Y | Y | Y | ? |
| && | Y | Y | Y | Y | Y | Y | Y | ? |
| || | Y | Y | Y | Y | Y | Y | Y | ? |
| << | Y | Y | Y | Y | Y | Y | Y | ? |
| >> | Y | Y | Y | Y | Y | Y | Y | ? |
| >>> | Y | Y | Y | Y | Y | Y | Y | ? |
| Assignment expressions | ||||||||
| = | Y | Y | Y | Y | Y | Y | Y | ? |
| *= | Y | Y | Y | Y | Y | Y | Y | ? |
| /= | Y | Y | Y | Y | Y | Y | Y | ? |
| %= | Y | Y | Y | Y | Y | Y | Y | ? |
| += | Y | Y | Y | Y | Y | Y | Y | ? |
| -= | Y | Y | Y | Y | Y | Y | Y | ? |
| <<= | Y | Y | Y | Y | Y | Y | Y | ? |
| >>= | Y | Y | Y | Y | Y | Y | Y | ? |
| >>>= | Y | Y | Y | Y | Y | Y | Y | ? |
| &= | Y | Y | Y | Y | Y | Y | Y | ? |
| ^= | Y | Y | Y | Y | Y | Y | Y | ? |
| |= | Y | Y | Y | Y | Y | Y | Y | ? |
| Statements | ||||||||
| Exp ? Exp : Exp | Y | Y | Y | Y | Y | Y | Y | ? |
| var | Y | Y | Y | Y | Y | Y | Y | ? |
| function | Y | Y | Y | Y | Y | Y | Y | ? |
| if | Y | Y | Y | Y | Y | Y | Y | ? |
| if ... else | Y | Y | Y | Y | Y | Y | Y | ? |
| do ... while | Y | Y | Y | Y | Y | Y | Y | ? |
| while | Y | Y | Y | Y | Y | Y | Y | ? |
| for | Y | Y | Y | Y | Y | Y | Y | ? |
| for in | I | I | Y | Y | Y | Y | Y | ? |
| continue | Y | Y | Y | Y | Y | Y | Y | ? |
| break | Y | Y | Y | Y | Y | Y | Y | ? |
| return | Y | Y | Y | Y | Y | Y | Y | ? |
| with | Y | Y | Y | Y | Y | Y | Y | ? |
| switch | Y | Y | Y | Y | Y | Y | Y | ? |
| throw | Y | Y | Y | Y | Y | Y | Y | ? |
| try | Y | Y | Y | Y | Y | Y | Y | ? |
| catch | Y | Y | Y | Y | Y | Y | Y | ? |
| finally | Y | Y | Y | Y | Y | Y | Y | ? |
Objects are groups of related data and methods. The following objects are built into the ECMAScript language.
| Feature | IE 6 | IE 7 | Firefox 1.5 | Firefox 2 | Firefox 3 | Opera 8.5 | Opera 9 | Safari 2 |
|---|---|---|---|---|---|---|---|---|
| Global | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| NaN | Y | Y | Y | Y | Y | Y | Y | ? |
| Infinity | Y | Y | Y | Y | Y | Y | Y | ? |
| undefined | Y | Y | Y | Y | Y | Y | Y | ? |
| eval() | Y | Y | Y | Y | Y | Y | Y | ? |
| parseInt() | Y | Y | Y | Y | Y | Y | Y | ? |
| parseFloat() | Y | Y | Y | Y | Y | Y | Y | ? |
| isNaN() | Y | Y | Y | Y | Y | Y | Y | ? |
| isFinite() | Y | Y | Y | Y | Y | Y | Y | ? |
| decodeURI() | Y | Y | Y | Y | Y | Y | Y | ? |
| decodeURIComponent() | Y | Y | Y | Y | Y | Y | Y | ? |
| encodeURI() | Y | Y | Y | Y | Y | Y | Y | ? |
| encodeURIComponent() | Y | Y | Y | Y | Y | Y | Y | ? |
| Object | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleString() | Y | Y | Y | Y | Y | Y | Y | ? |
| valueOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| hasOwnProperty() | Y | Y | Y | Y | Y | Y | Y | ? |
| isPrototypeOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| prototypeIsEnumerable() | Y | Y | Y | Y | Y | Y | Y | ? |
| Function | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| apply() | Y | Y | Y | Y | Y | Y | Y | ? |
| call() | Y | Y | Y | Y | Y | Y | Y | ? |
| length | Y | Y | Y | Y | Y | Y | Y | ? |
| Array | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleString() | Y | Y | Y | Y | Y | Y | Y | ? |
| concat() | Y | Y | Y | Y | Y | Y | Y | ? |
| join() | Y | Y | Y | Y | Y | Y | Y | ? |
| pop() | Y | Y | Y | Y | Y | Y | Y | ? |
| push() | Y | Y | Y | Y | Y | Y | Y | ? |
| reverse() | Y | Y | Y | Y | Y | Y | Y | ? |
| shift() | Y | Y | Y | Y | Y | Y | Y | ? |
| slice() | Y | Y | Y | Y | Y | Y | Y | ? |
| sort() | Y | Y | Y | Y | Y | Y | Y | ? |
| splice() | Y | Y | Y | Y | Y | Y | Y | ? |
| unshift() | Y | Y | Y | Y | Y | Y | Y | ? |
| length | Y | Y | Y | Y | Y | Y | Y | ? |
| String | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| fromCharCode() | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor() | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| valueOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| charAt() | Y | Y | Y | Y | Y | Y | Y | ? |
| charCodeAt() | Y | Y | Y | Y | Y | Y | Y | ? |
| concat() | Y | Y | Y | Y | Y | Y | Y | ? |
| indexOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| lastIndexOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| localeCompare() | Y | Y | Y | Y | Y | Y | Y | ? |
| match() | Y | Y | Y | Y | Y | Y | Y | ? |
| replace() | Y | Y | Y | Y | Y | Y | Y | ? |
| search() | Y | Y | Y | Y | Y | Y | Y | ? |
| slice() | Y | Y | Y | Y | Y | Y | Y | ? |
| split() | I | I | Y | Y | Y | Y | Y | ? |
| substring() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLowerCase() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleLowerCase() | Y | Y | Y | Y | Y | Y | Y | ? |
| toUpperCase() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleUpperCase() | Y | Y | Y | Y | Y | Y | Y | ? |
| length | Y | Y | Y | Y | Y | Y | Y | ? |
| Boolean | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| valueOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| Number | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| MAX_VALUE | Y | Y | Y | Y | Y | Y | Y | ? |
| MIN_VALUE | Y | Y | Y | Y | Y | Y | Y | ? |
| NaN | Y | Y | Y | Y | Y | Y | Y | ? |
| NEGATIVE_INFINITY | Y | Y | Y | Y | Y | Y | Y | ? |
| POSITIVE_INFINITY | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleString() | Y | Y | Y | Y | Y | Y | Y | ? |
| valueOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| toFixed() | Y | Y | Y | Y | Y | Y | Y | ? |
| toExponential() | Y | Y | Y | Y | Y | Y | Y | ? |
| toPrecision() | Y | Y | Y | Y | Y | Y | Y | ? |
| Math | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| E | Y | Y | Y | Y | Y | Y | Y | ? |
| LN10 | Y | Y | Y | Y | Y | Y | Y | ? |
| LN2 | Y | Y | Y | Y | Y | Y | Y | ? |
| LOG2E | Y | Y | Y | Y | Y | Y | Y | ? |
| LOG10E | Y | Y | Y | Y | Y | Y | Y | ? |
| PI | Y | Y | Y | Y | Y | Y | Y | ? |
| SQRT1_2 | Y | Y | Y | Y | Y | Y | Y | ? |
| SQRT2 | Y | Y | Y | Y | Y | Y | Y | ? |
| abs() | Y | Y | Y | Y | Y | Y | Y | ? |
| acos() | Y | Y | Y | Y | Y | Y | Y | ? |
| asin() | Y | Y | Y | Y | Y | Y | Y | ? |
| atan() | Y | Y | Y | Y | Y | Y | Y | ? |
| atan2() | Y | Y | Y | Y | Y | Y | Y | ? |
| ceil() | Y | Y | Y | Y | Y | Y | Y | ? |
| cos() | Y | Y | Y | Y | Y | Y | Y | ? |
| exp() | Y | Y | Y | Y | Y | Y | Y | ? |
| floor() | Y | Y | Y | Y | Y | Y | Y | ? |
| log() | Y | Y | Y | Y | Y | Y | Y | ? |
| max() | Y | Y | Y | Y | Y | Y | Y | ? |
| min() | Y | Y | Y | Y | Y | Y | Y | ? |
| pow() | Y | Y | Y | Y | Y | Y | Y | ? |
| random() | Y | Y | Y | Y | Y | Y | Y | ? |
| round() | Y | Y | Y | Y | Y | Y | Y | ? |
| sin() | Y | Y | Y | Y | Y | Y | Y | ? |
| sqrt() | Y | Y | Y | Y | Y | Y | Y | ? |
| tan() | Y | Y | Y | Y | Y | Y | Y | ? |
| Date | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toDateString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toTimeString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleDateString() | Y | Y | Y | Y | Y | Y | Y | ? |
| toLocaleTimeString() | Y | Y | Y | Y | Y | Y | Y | ? |
| valueOf() | Y | Y | Y | Y | Y | Y | Y | ? |
| getTime() | Y | Y | Y | Y | Y | Y | Y | ? |
| getFullYear() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCFullYear() | Y | Y | Y | Y | Y | Y | Y | ? |
| getMonth() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCMonth() | Y | Y | Y | Y | Y | Y | Y | ? |
| getDate() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCDate() | Y | Y | Y | Y | Y | Y | Y | ? |
| getDay() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCDay() | Y | Y | Y | Y | Y | Y | Y | ? |
| getHours() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCHours() | Y | Y | Y | Y | Y | Y | Y | ? |
| getMinutes() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCMinutes() | Y | Y | Y | Y | Y | Y | Y | ? |
| getSeconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCSeconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| getMilliseconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| getUTCMilliseconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| getTimezoneOffset() | Y | Y | Y | Y | Y | Y | Y | ? |
| setTime() | Y | Y | Y | Y | Y | Y | Y | ? |
| setMilliseconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCMilliseconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| setSeconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCSeconds() | Y | Y | Y | Y | Y | Y | Y | ? |
| setMinutes() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCMinutes() | Y | Y | Y | Y | Y | Y | Y | ? |
| setHours() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCHours() | Y | Y | Y | Y | Y | Y | Y | ? |
| setDate() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCDate() | Y | Y | Y | Y | Y | Y | Y | ? |
| setMonth() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCMonth() | Y | Y | Y | Y | Y | Y | Y | ? |
| setFullYear() | Y | Y | Y | Y | Y | Y | Y | ? |
| setUTCFullYear() | Y | Y | Y | Y | Y | Y | Y | ? |
| toUTCString() | Y | Y | Y | Y | Y | Y | Y | ? |
| RegExp | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| exec() | Y | Y | Y | Y | Y | Y | Y | ? |
| test() | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |
| source | Y | Y | Y | Y | Y | Y | Y | ? |
| global | Y | Y | Y | Y | Y | Y | Y | ? |
| ignoreCase | Y | Y | Y | Y | Y | Y | Y | ? |
| multiline | Y | Y | Y | Y | Y | Y | Y | ? |
| lastIndex | Y | Y | Y | Y | Y | Y | Y | ? |
| Error | ||||||||
| (General) | Y | Y | Y | Y | Y | Y | Y | ? |
| prototype | Y | Y | Y | Y | Y | Y | Y | ? |
| constructor | Y | Y | Y | Y | Y | Y | Y | ? |
| name | Y | Y | Y | Y | Y | Y | Y | ? |
| message | Y | Y | Y | Y | Y | Y | Y | ? |
| toString() | Y | Y | Y | Y | Y | Y | Y | ? |