Comparison of JavaScript engines
Jump to navigation
Jump to search
This article needs to be updated. (June 2019) |
The following tables compare standards support for some notable JavaScript/ECMAScript engines used in web browsers.
Explanation of tables[edit]
See List of ECMAScript engines for a full list.
Values[edit]
These indicate the level of support for the given item in each engine. By default, the most recent version of the engine is implied. However, a specific version number can be listed; when this indicates full support, it's the initial version of the engine fully supporting the item.
| Value | Meaning |
|---|---|
| Yes | Fully supported |
| No | Has never been supported |
| Partial | Only some values are supported |
| Incorrect | Not implemented correctly in all cases |
| Experimental | May be incomplete or buggy |
| Nightly build | Currently in development; full support is expected |
| Depends | Only supported for the specified conditions |
| Dropped | No longer supported |
ECMAScript version support[edit]
| Browser engine | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Corresponding JavaScript engine | JScript / Chakra | SpiderMonkey | JavaScriptCore | Linear B / Futhark / Carakan | V8 |
| ECMAScript Edition 3 | Yes | 0.6 | Yes | 1.0 | Yes |
| ECMAScript Edition 5 | 5.0 | 2.0 | Partial | Yes | Yes |
| ECMAScript Edition 6 | ? | ? | ? | ? | ? |
| JavaScript 1.5 extensions | No | 0.6 | Yes | 1.0 | Yes |
| JavaScript 1.6 extensions (excluding E4X) |
No | 1.8 | Partial | Partial | Partial |
| JavaScript 1.7 extensions | No | 1.8.1 | No | Partial | No |
| JavaScript 1.8 extensions | No | 1.9 | Partial | No | Partial |
| JavaScript 1.8.1 extensions | No | 1.9.1 | No | No | No |
| JScript .NET extensions | No | No | No | No | No |
| ActionScript extensions | No | No | No | No | No |
| E4X | No | Dropped[1] | No | No | No |
Standard library[edit]
Parts of this article (those related to Several sections missing Blink) need to be updated. (May 2020) |
Global object[edit]
| Global object | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Value properties | |||||
NaN
|
4.0 | 0.6 | Yes | Yes | Yes |
Infinity
|
4.0 | 0.6 | Yes | Yes | Yes |
undefined
|
5.5 | 0.6 | Yes | Yes | Yes |
| Function properties | |||||
eval(x)
|
3.0 | 0.6 | Yes | Yes | Yes |
parseInt(string [, radix])
|
3.0 | 0.6 | Yes | Yes | Yes |
parseFloat(string)
|
3.0 | 0.6 | Yes | Yes | Yes |
isNaN(number)
|
4.0 | 0.6 | Yes | Yes | Yes |
isFinite(number)
|
4.0 | 0.6 | Yes | Yes | Yes |
| URI handling functions | |||||
decodeURI(encodedURI)
|
5.5 | 0.6 | Yes | Yes | Yes |
decodeURIComponent(encodedURIComponent)
|
5.5 | 0.6 | Yes | Yes | Yes |
encodeURI(uri)
|
5.5 | 0.6 | Yes | Yes | Yes |
encodeURIComponent(uriComponent)
|
5.5 | 0.6 | Yes | Yes | Yes |
| Constructor properties | |||||
Object
|
4.0 | Yes | Yes | Yes | Yes |
Function
|
4.0 | Yes | Yes | Yes | Yes |
Array
|
4.0 | Yes | Yes | Yes | Yes |
String
|
3.0 | Yes | Yes | Yes | Yes |
Boolean
|
3.0 | Yes | Yes | Yes | Yes |
Number
|
3.0 | Yes | Yes | Yes | Yes |
Date
|
3.0 | Yes | Yes | Yes | Yes |
RegExp
|
4.0 | Yes | Yes | Yes | Yes |
Error
|
5.0 | Yes | Yes | Yes | Yes |
EvalError
|
5.0 | Yes | Yes | Yes | Yes |
RangeError
|
5.0 | Yes | Yes | Yes | Yes |
ReferenceError
|
5.0 | Yes | Yes | Yes | Yes |
SyntaxError
|
5.0 | Yes | Yes | Yes | Yes |
TypeError
|
5.0 | Yes | Yes | Yes | Yes |
URIError
|
5.0 | Yes | Yes | Yes | Yes |
| Other properties | |||||
Math
|
3.0 | Yes | Yes | Yes | Yes |
| Additional properties | |||||
escape(string)
|
3.0 | Yes | Yes | Yes | Yes |
unescape(string)
|
3.0 | Yes | Yes | Yes | Yes |
Object object[edit]
| Object object | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Called as function | |||||
Object([value])
|
Yes | Yes | Yes | Yes | Yes |
| Called as constructor | |||||
new Object([value])
|
4.0 | Yes | Yes | Yes | Yes |
| Properties | |||||
prototype
|
4.0 | Yes | Yes | Yes | Yes |
| Properties of prototype | |||||
constructor
|
4.0 | Yes | Yes | Yes | Yes |
toString()
|
4.0 | Yes | Yes | Yes | Yes |
toLocaleString()
|
4.0 | Yes | Yes | Yes | Yes |
valueOf()
|
4.0 | Yes | Yes | Yes | Yes |
hasOwnProperty(V)
|
5.5 | Yes | 3 | Yes | Yes |
isPrototypeOf(V)
|
5.5 | Yes | 3 | Yes | Yes |
propertyIsEnumerable(V)
|
5.5 | Yes | 3 | Yes | Yes |
Function object[edit]
| Function object | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Called as function | |||||
Function([[p1 [, p2 [, ...]],] body])
|
? | Yes | Yes | ? | Yes |
| Called as constructor | |||||
new Function([[p1 [, p2 [, ...]],] body])
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties | |||||
length
|
? | 1.0 | Yes | Yes | Yes |
prototype
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties of prototype | |||||
length
|
? | 1.0 | Yes | ? | Yes |
constructor
|
4.0 | 1.0 | Yes | 1.0 | Yes |
toString()
|
4.0 | 1.0 | Yes | 1.0 | Yes |
apply(thisArg, argArray)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
call(thisArg [, arg1 [, arg2 [, ...]]])
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties of instances | |||||
length
|
4.0 | 1.0 | Yes | 1.0 | Yes |
prototype
|
4.0 | 1.0 | Yes | 1.0 | Yes |
Array object[edit]
| Array object | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Called as function | |||||
Array([item1 [, item2 [, ...]]])
|
Yes | Yes | Yes | Yes | Yes |
| Called as constructor | |||||
new Array([item1, item2 [, ...]])
|
4.0 | 1.0 | Yes | 1.0 | Yes |
new Array(len)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties | |||||
prototype
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties of prototype | |||||
constructor
|
4.0 | 1.0 | Yes | 1.0 | Yes |
toString()
|
4.0 | 1.0 | Yes | 1.0 | Yes |
toLocaleString()
|
5.5 | 1.0 | Yes | 1.0 | Yes |
concat([item1 [, item2 [,...]]])
|
4.0 | 1.0 | Yes | 1.0 | Yes |
join(separator)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
pop()
|
5.5 | 1.0 | Yes | 1.0 | Yes |
push([item1 [, item2 [,...]]])
|
5.5 | 1.0 | Yes | 1.0 | Yes |
reverse()
|
4.0 | 1.0 | Yes | 1.0 | Yes |
shift()
|
5.5 | 1.0 | Yes | 1.0 | Yes |
slice(start, end)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
sort(comparefn)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
splice(start, deleteCount [, item1 [, item2 [, ...]]])
|
5.5 | 1.0 | Yes | 1.0 | Yes |
unshift([item1 [, item2 [, ...]]])
|
5.5 | 1.0 | Yes | 1.0 | Yes |
indexOf(searchElement[, fromIndex])
|
9.0[2] | 1.8 | 522 | 2.1 | Yes |
lastIndexOf(searchElement[, fromIndex])
|
1.8 | 522 | 2.1 | Yes | |
filter(callback[, thisObject])
|
1.8 | 522 | 2.1 | Yes | |
forEach(callback[, thisObject])
|
1.8 | 522 | 2.1 | Yes | |
every(callback[, thisObject])
|
1.8 | 522 | 2.1 | Yes | |
map(callback[, thisObject])
|
1.8 | 522 | 2.1 | Yes | |
some(callback[, thisObject])
|
1.8 | 522 | 2.1 | Yes | |
reduce(callback[, initialValue])
|
1.9 | 528 | 2.5.22 | Yes | |
reduceRight(callback[, initialValue])
|
1.9 | 528 | 2.5.22 | Yes | |
| Properties of instances | |||||
length
|
4.0 | 1.0 | Yes | 1.0 | Yes |
String object[edit]
| String object | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Called as function | |||||
String([value])
|
Yes | Yes | Yes | Yes | Yes |
| Called as constructor | |||||
new String([value])
|
3.0 | 1.0 | Yes | 1.0 | Yes |
| Properties | |||||
prototype
|
4.0 | 1.0 | Yes | 1.0 | Yes |
fromCharCode([char0 [, char1 [, ...]]])
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties of prototype | |||||
constructor
|
4.0 | 1.0 | Yes | 1.0 | Yes |
toString()
|
3.0 | 1.0 | Yes | 1.0 | Yes |
valueOf()
|
3.0 | 1.0 | Yes | 1.0 | Yes |
charAt(pos)
|
3.0 | 1.0 | Yes | 1.0 | Yes |
charCodeAt(pos)
|
5.5 | 1.0 | Yes | 1.0 | Yes |
concat([string1 [, string2 [, ...]]])
|
4.0 | 1.0 | Yes | 1.0 | Yes |
indexOf(searchString, position)
|
3.0 | 1.0 | Yes | 1.0 | Yes |
lastIndexOf(searchString, position)
|
3.0 | 1.0 | Yes | 1.0 | Yes |
localeCompare(that)
|
5.5 | 1.0 | Yes | 1.0 | Yes |
match(regexp)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
replace(searchValue, replaceValue)
|
3.0 | 1.0 | Yes | 1.0 | Yes |
search(regexp)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
slice(start, end)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
split(separator, limit)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
substring(start, end)
|
3.0 | 1.0 | Yes | 1.0 | Yes |
toLowerCase()
|
3.0 | 1.0 | Yes | 1.0 | Yes |
toLocaleLowerCase(comparefn)
|
3.0 | 1.0 | Yes | 1.0 | Yes |
toUpperCase()
|
3.0 | 1.0 | Yes | 1.0 | Yes |
toLocaleUpperCase()
|
3.0 | 1.0 | Yes | 1.0 | Yes |
| Additional properties of prototype | |||||
substr(start, length)
|
4.0 | 1.0 | Yes | 1.0 | Yes |
| Properties of instances | |||||
length
|
3.0 | 1.0 | Yes | 1.0 | Yes |
Boolean object[edit]
| Boolean object | MSHTML | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Called as function | |||||
Boolean([value])
|
Yes | Yes | Yes | Yes | Yes |
| Called as constructor | |||||
new Boolean([value])
|
3.0 | Yes | Yes | Yes | Yes |
| Properties | |||||
prototype
|
4.0 | Yes | Yes | Yes | Yes |
| Properties of prototype | |||||
constructor
|
4.0 | Yes | Yes | Yes | Yes |
toString()
|
4.0 | Yes | Yes | Yes | Yes |
valueOf()
|
4.0 | Yes | Yes | Yes | Yes |
Number object[edit]
| Number object | MSHTML | Gecko | WebKit | Presto |
|---|---|---|---|---|
| Called as function | ||||
Number([value])
|
? | Yes | Yes | ? |
| Called as constructor | ||||
new Number([value])
|
3.0 | 1.0 | Yes | 1.0 |
| Properties | ||||
prototype
|
4.0 | 1.0 | Yes | 1.0 |
MAX_VALUE
|
4.0 | 1.0 | Yes | 1.0 |
MIN_VALUE
|
4.0 | 1.0 | Yes | 1.0 |
NaN
|
4.0 | 1.0 | Yes | 1.0 |
NEGATIVE_INFINITY
|
4.0 | 1.0 | Yes | 1.0 |
POSITIVE_INFINITY
|
4.0 | 1.0 | Yes | 1.0 |
| Properties of prototype | ||||
constructor
|
4.0 | 1.0 | Yes | 1.0 |
toString([radix])
|
4.0 | 1.0 | Yes | 1.0 |
toLocaleString()
|
5.5 | 1.0 | Yes | 1.0 |
valueOf()
|
4.0 | 1.0 | Yes | 1.0 |
toFixed(fractionDigits)
|
5.5 | 1.0 | Yes | 1.0 |
toExponential(fractionDigits)
|
5.5 | 1.0 | Yes | 1.0 |
toPrecision(precision)
|
5.5 | 1.0 | Yes | 1.0 |
Math object[edit]
| Math object | MSHTML | Gecko | WebKit | Presto |
|---|---|---|---|---|
| Value properties | ||||
E
|
3.0 | 1.0 | Yes | 1.0 |
LN10
|
3.0 | 1.0 | Yes | 1.0 |
LN2
|
3.0 | 1.0 | Yes | 1.0 |
LOG2E
|
3.0 | 1.0 | Yes | 1.0 |
LOG10E
|
3.0 | 1.0 | Yes | 1.0 |
PI
|
Yes | Yes | Yes | Yes |
SQRT1_2
|
3.0 | 1.0 | Yes | 1.0 |
SQRT2
|
Yes | Yes | Yes | Yes |
| Function properties | ||||
abs(x)
|
3.0 | 1.0 | Yes | 1.0 |
acos(x)
|
3.0 | 1.0 | Yes | 1.0 |
asin(x)
|
3.0 | 1.0 | Yes | 1.0 |
atan(x)
|
3.0 | 1.0 | Yes | 1.0 |
atan2(y, x)
|
3.0 | 1.0 | Yes | 1.0 |
ceil(x)
|
3.0 | 1.0 | Yes | 1.0 |
cos(x)
|
3.0 | 1.0 | Yes | 1.0 |
exp(x)
|
3.0 | 1.0 | Yes | 1.0 |
floor(x)
|
3.0 | 1.0 | Yes | 1.0 |
log(x)
|
3.0 | 1.0 | Yes | 1.0 |
max([value1 [, value2 [, ...]]])
|
3.0 | 1.0 | Yes | 1.0 |
min([value1 [, value2 [, ...]]])
|
3.0 | 1.0 | Yes | 1.0 |
pow(x, y)
|
3.0 | 1.0 | Yes | 1.0 |
random()
|
3.0 | 1.0 | Yes | 1.0 |
round(x)
|
3.0 | 1.0 | Yes | 1.0 |
sin(x)
|
3.0 | 1.0 | Yes | 1.0 |
sqrt(x)
|
3.0 | 1.0 | Yes | 1.0 |
tan(x)
|
3.0 | 1.0 | Yes | 1.0 |
Date object[edit]
| Date object | MSHTML | Gecko | WebKit | Presto |
|---|---|---|---|---|
| Called as function | ||||
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]])
|
? | ? | ? | ? |
| Called as constructor | ||||
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]])
|
4.0 | 1.0 | Yes | 1.0 |
new Date (value)
|
4.0 | 1.0 | Yes | 1.0 |
new Date ()
|
4.0 | 1.0 | Yes | 1.0 |
| Properties | ||||
prototype
|
4.0 | 1.0 | Yes | 1.0 |
parse(string)
|
3.0 | 1.0 | Yes | 1.0 |
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]])
|
3.0 | 1.0 | Yes | 1.0 |
| Properties of prototype | ||||
constructor
|
4.0 | 1.0 | Yes | 1.0 |
toString()
|
4.0 | 1.0 | Yes | 1.0 |
toDateString()
|
4.0 | 1.0 | Yes | 1.0 |
toTimeString()
|
4.0 | 1.0 | Yes | 1.0 |
toLocaleString()
|
4.0 | 1.0 | Yes | 1.0 |
toLocaleDateString()
|
4.0 | 1.0 | Yes | 1.0 |
toLocaleTimeString()
|
4.0 | 1.0 | Yes | 1.0 |
valueOf()
|
4.0 | 1.0 | Yes | 1.0 |
getTime()
|
3.0 | 1.0 | Yes | 1.0 |
getFullYear()
|
4.0 | 1.0 | Yes | 1.0 |
getMonth()
|
3.0 | 1.0 | Yes | 1.0 |
getUTCMonth()
|
4.0 | 1.0 | Yes | 1.0 |
getDate()
|
3.0 | 1.0 | Yes | 1.0 |
getUTCDate()
|
4.0 | 1.0 | Yes | 1.0 |
getDay()
|
3.0 | 1.0 | Yes | 1.0 |
getUTCDay()
|
4.0 | 1.0 | Yes | 1.0 |
getHours()
|
3.0 | 1.0 | Yes | 1.0 |
getUTCHours()
|
4.0 | 1.0 | Yes | 1.0 |
getMinutes()
|
3.0 | 1.0 | Yes | 1.0 |
getUTCMinutes()
|
4.0 | 1.0 | Yes | 1.0 |
getSeconds()
|
3.0 | 1.0 | Yes | 1.0 |
getUTCSeconds()
|
4.0 | 1.0 | Yes | 1.0 |
getMilliseconds()
|
4.0 | 1.0 | Yes | 1.0 |
getUTCMilliseconds()
|
4.0 | 1.0 | Yes | 1.0 |
getTimezoneOffset()
|
4.0 | 1.0 | Yes | 1.0 |
setTime(time)
|
3.0 | 1.0 | Yes | 1.0 |
setMilliseconds(ms)
|
4.0 | 1.0 | Yes | 1.0 |
setUTCMilliseconds(ms)
|
4.0 | 1.0 | Yes | 1.0 |
setSeconds(sec [, ms])
|
3.0 | 1.0 | Yes | 1.0 |
setUTCSeconds(sec [, ms])
|
4.0 | 1.0 | Yes | 1.0 |
setMinutes(min [, sec [, ms]])
|
3.0 | 1.0 | Yes | 1.0 |
setUTCMinutes(min [, sec [, ms]])
|
4.0 | 1.0 | Yes | 1.0 |
setHours(hour [, min [, sec [, ms]]])
|
4.0 | 1.0 | Yes | 1.0 |
setUTCHours(hour [, min [, sec [, ms]]])
|
4.0 | 1.0 | Yes | 1.0 |
setDate(date)
|
4.0 | 1.0 | Yes | 1.0 |
setUTCDate(date)
|
4.0 | 1.0 | Yes | 1.0 |
setMonth(month [, date])
|
3.0 | 1.0 | Yes | 1.0 |
setUTCMonth(month [, date])
|
4.0 | 1.0 | Yes | 1.0 |
setFullYear(year [, month [, date]])
|
4.0 | 1.0 | Yes | 1.0 |
setUTCFullYear(year [, month [, date]])
|
4.0 | 1.0 | Yes | 1.0 |
toUTCString()
|
4.0 | 1.0 | Yes | 1.0 |
| Additional properties of prototype | ||||
getYear()
|
3.0 | 1.0 | Yes | 1.0 |
setYear(year)
|
3.0 | 1.0 | Yes | 1.0 |
toGMTString()
|
4.0 | 1.0 | Yes | 1.0 |
RegExp object[edit]
| RegExp object | MSHTML | Gecko | WebKit | Presto |
|---|---|---|---|---|
| Called as function | ||||
RegExp (pattern, flags)
|
? | ? | ? | ? |
| Called as constructor | ||||
new RegExp (pattern, flags)
|
4.0 | 1.0 | Yes | 1.0 |
| Properties | ||||
prototype
|
4.0 | 1.0 | Yes | 1.0 |
| Properties of prototype | ||||
constructor
|
4.0 | 1.0 | Yes | 1.0 |
exec(string)
|
4.0 | 1.0 | Yes | 1.0 |
test(string)
|
4.0 | 1.0 | Yes | 1.0 |
toString()
|
4.0 | 1.0 | Yes | 1.0 |
| Properties of instances | ||||
source
|
4.0 | 1.0 | Yes | 1.0 |
global
|
4.0 | 1.0 | Yes | 1.0 |
ignoreCase
|
5.5 | 1.0 | Yes | 1.0 |
multiline
|
5.5 | 1.0 | Yes | 1.0 |
lastIndex
|
4.0 | 1.0 | Yes | 1.0 |
Error object[edit]
| Error object | MSHTML | Gecko | WebKit | Presto |
|---|---|---|---|---|
| Called as function | ||||
Error (message)
|
? | ? | ? | ? |
| Called as constructor | ||||
new Error (message)
|
5.0 | 1.0 | Yes | 1.0 |
| Properties | ||||
prototype
|
5.0 | 1.0 | Yes | 1.0 |
| Properties of prototype | ||||
constructor
|
5.0 | 1.0 | Yes | 1.0 |
name
|
5.5 | 1.0 | Yes | 1.0 |
message
|
5.5 | 1.0 | Yes | 1.0 |
toString()
|
5.0 | 1.0 | Yes | 1.0 |
NativeError objects[edit]
| NativeError object | MSHTML | Gecko | WebKit | Presto |
|---|---|---|---|---|
| Called as function | ||||
EvalError (message)
|
? | 1.0 | Yes | ? |
RangeError (message)
|
? | 1.0 | Yes | ? |
ReferenceError (message)
|
? | 1.0 | Yes | ? |
SyntaxError (message)
|
? | 1.0 | Yes | ? |
TypeError (message)
|
? | 1.0 | Yes | ? |
URIError (message)
|
? | 1.0 | Yes | ? |
| Called as constructor | ||||
new EvalError (message)
|
? | 1.0 | Yes | ? |
new RangeError (message)
|
? | 1.0 | Yes | ? |
new ReferenceError (message)
|
? | 1.0 | Yes | ? |
new SyntaxError (message)
|
? | 1.0 | Yes | ? |
new TypeError (message)
|
? | 1.0 | Yes | ? |
new URIError (message)
|
? | 1.0 | Yes | ? |
| Properties | ||||
prototype
|
? | 1.0 | ? | ? |
| Properties of prototype | ||||
constructor
|
? | 1.0 | ? | ? |
name
|
? | 1.0 | Yes | ? |
message
|
? | 1.0 | Yes | ? |
References[edit]
- ^ E4X, Mozilla
- ^ ECMAScript 5 Arrays, Microsoft, archived from the original on 2010-06-27, retrieved 2010-06-24
Further reading[edit]
- ECMAScript object support in Opera
- JavaScript tests & Compatibility tables
- ECMAScript 6 compatibility table
External links[edit]
- Webdevout – mostly covers Windows browsers. Extensive bug testing.