Comparison of JavaScript engines
The following tables compare standards support for some notable JavaScript/ECMAScript engines used in web browsers.
Explanation of tables
See List of ECMAScript engines for a full list.
Values
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
| Browser layout engine | Trident | 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
Global object
| Global object | Trident | 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
| Object object | Trident | 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
| Function object | Trident | Gecko | WebKit | Presto | Blink |
|---|---|---|---|---|---|
| Called as function | |||||
| {{code|Function([[p1 [, p2 [, ...]],] body])}} | ? | Yes | Yes | ? | Yes |
| Called as constructor | |||||
| {{code|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
| Array object | Trident | 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
| String object | Trident | 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
| Boolean object | Trident | 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
| Number object | Trident | 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
| Math object | Trident | 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
| Date object | Trident | 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
| RegExp object | Trident | 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
| Error object | Trident | 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
| NativeError object | Trident | 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 | ? |
gollark: I don't want to *have* to arbitrarily trust people. This is why I do things like "TLS" and "not giving everyone my SSH keys".
gollark: ????
gollark: It would be possible, although stupid, to make a cryptocurrency where new blocks can only be issued by GTech™ bee cuboids using a private signing key, although this may break some of the security incentives.
gollark: This is just a feature of proof of work, not all cryptocurrency. Not that there are good alternatives right now.
gollark: Well, Nim is basically compiled statically typed compile-time-instead-of-runtime-metaprogramming-capable somewhat immature mildly more expression-oriented Python.
References
- E4X, Mozilla
- ECMAScript 5 Arrays, Microsoft, archived from the original on 2010-06-27, retrieved 2010-06-24
Further reading
External links
- Webdevout – mostly covers Windows browsers. Extensive bug testing.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.