JavaScript引擎比较

下表比较在网页浏览器内使用一些知名JavaScript引擎对标准的支持。

表格解说

完整列表可参见ECMAScript引擎列表。

值

这些值指示了在每个引擎中对给定项目的支持程度。缺省的,默认为这个引擎的最新版本。但是,可以列出特定版本号;当这指示完全支持的时候,它是这个引擎完全支持这个项目的最初版本。

值 含义
是 完全支持
否 从未支持
部份 只支持某些值
不正確 在所有情况下未正确实现
實驗性質 可能不完全或有缺陷
每日构建 目前正在开发;可预期完全支持
依情況 只在特定条件下支持
抛弃 不再支持

ECMAScript版本支持

下表中的版本号为排版引擎的版本号。JavaScript的版本号就是JavaScript引擎中SpiderMonkey的版本号,在ECMAScript Edition 5之后不再延续跟进。

Trident Gecko WebKit Presto Blink
ECMAScript引擎名称 JScript
Chakra
SpiderMonkey
TraceMonkey
JägerMonkey
IonMonkey
JavaScriptCore
SquirrelFish Extreme
Linear B
Futhark
Carakan
V8
ECMAScript Edition 3
等价于JavaScript 1.5
是 1.7[1] 是 1.0 是
JavaScript 1.6 扩展
(排除E4X)
否 1.8 部份 部份 部份
JavaScript 1.7 扩展 否 1.8.1 否 部份 否
JavaScript 1.8 扩展 否 1.9 部份 否 部份
JavaScript 1.8.1 扩展 否 1.9.1 否 否 否
ECMAScript Edition 5
等价于JavaScript 1.8.5
7.0 2.0 部份 是 是
E4X 否 废弃于17[2] 否 否 否
ECMAScript Edition 6
又称ECMAScript 2015
部份 部份 部份
ECMAScript 2016扩展 是 是 是
ES新近版本2016+扩展 部份 部份 是

标准库

全局对象

Trident Gecko WebKit Presto Blink
值属性
NaN 4.0 0.6 是 是 是
Infinity 4.0 0.6 是 是 是
undefined 5.5 0.6 是 是 是
函数属性
eval(x) 3.0 0.6 是 是 是
parseInt(string [, radix]) 3.0 0.6 是 是 是
parseFloat(string) 3.0 0.6 是 是 是
isNaN(number) 4.0 0.6 是 是 是
isFinite(number) 4.0 0.6 是 是 是
URI处理函数
decodeURI(encodedURI) 5.5 0.6 是 是 是
decodeURIComponent(encodedURIComponent) 5.5 0.6 是 是 是
encodeURI(uri) 5.5 0.6 是 是 是
encodeURIComponent(uriComponent) 5.5 0.6 是 是 是
constructor属性
Object 4.0 是 是 是 是
Function 4.0 是 是 是 是
Array 4.0 是 是 是 是
String 3.0 是 是 是 是
Boolean 3.0 是 是 是 是
Number 3.0 是 是 是 是
Date 3.0 是 是 是 是
RegExp 4.0 是 是 是 是
Error 5.0 是 是 是 是
EvalError 5.0 是 是 是 是
RangeError 5.0 是 是 是 是
ReferenceError 5.0 是 是 是 是
SyntaxError 5.0 是 是 是 是
TypeError 5.0 是 是 是 是
URIError 5.0 是 是 是 是
其他属性
Math 3.0 是 是 是 是
额外属性
escape(string) 3.0 是 是 是 是
unescape(string) 3.0 是 是 是 是

Object对象

Trident Gecko WebKit Presto Blink
调用为函数
Object([value]) 是 是 是 是 是
调用为constructor
new Object([value]) 4.0 是 是 是 是
属性
prototype 4.0 是 是 是 是
prototype的属性
constructor 4.0 是 是 是 是
toString() 4.0 是 是 是 是
toLocaleString() 4.0 是 是 是 是
valueOf() 4.0 是 是 是 是
hasOwnProperty(V) 5.5 是 3 是 是
isPrototypeOf(V) 5.5 是 3 是 是
propertyIsEnumerable(V) 5.5 是 3 是 是

Function对象

Trident Gecko WebKit Presto Blink
调用为函数
Function([[p1 [, p2 [, ...]],] body]) ? 是 是 ? 是
调用为constructor
new Function([[p1 [, p2 [, ...]],] body]) 4.0 1.0 是 1.0 是
属性
length ? 1.0 是 是 是
prototype 4.0 1.0 是 1.0 是
prototype的属性
length ? 1.0 是 ? 是
constructor 4.0 1.0 是 1.0 是
toString() 4.0 1.0 是 1.0 是
apply(thisArg, argArray) 4.0 1.0 是 1.0 是
call(thisArg [, arg1 [, arg2 [, ...]]]) 4.0 1.0 是 1.0 是
实例的属性
length 4.0 1.0 是 1.0 是
prototype 4.0 1.0 是 1.0 是

Array对象

Trident Gecko WebKit Presto Blink
调用为函数
Array([item1 [, item2 [, ...]]]) 是 是 是 是 是
调用为constructor
new Array([item1, item2 [, ...]]) 4.0 1.0 是 1.0 是
new Array(len) 4.0 1.0 是 1.0 是
属性
prototype 4.0 1.0 是 1.0 是
prototype的属性
constructor 4.0 1.0 是 1.0 是
toString() 4.0 1.0 是 1.0 是
toLocaleString() 5.5 1.0 是 1.0 是
concat([item1 [, item2 [,...]]]) 4.0 1.0 是 1.0 是
join(separator) 4.0 1.0 是 1.0 是
pop() 5.5 1.0 是 1.0 是
push([item1 [, item2 [,...]]]) 5.5 1.0 是 1.0 是
reverse() 4.0 1.0 是 1.0 是
shift() 5.5 1.0 是 1.0 是
slice(start, end) 4.0 1.0 是 1.0 是
sort(comparefn) 4.0 1.0 是 1.0 是
splice(start, deleteCount [, item1 [, item2 [, ...]]]) 5.5 1.0 是 1.0 是
unshift([item1 [, item2 [, ...]]]) 5.5 1.0 是 1.0 是
indexOf(searchElement[, fromIndex]) 9.0[3] 1.8 522 2.1 是
lastIndexOf(searchElement[, fromIndex]) 1.8 522 2.1 是
filter(callback[, thisObject]) 1.8 522 2.1 是
forEach(callback[, thisObject]) 1.8 522 2.1 是
every(callback[, thisObject]) 1.8 522 2.1 是
map(callback[, thisObject]) 1.8 522 2.1 是
some(callback[, thisObject]) 1.8 522 2.1 是
reduce(callback[, initialValue]) 1.9 528 2.5.22 是
reduceRight(callback[, initialValue]) 1.9 528 2.5.22 是
实例的属性
length 4.0 1.0 是 1.0 是

String对象

Trident Gecko WebKit Presto Blink
调用为函数
String([value]) 是 是 是 是 是
调用为constructor
new String([value]) 3.0 1.0 是 1.0 是
属性
prototype 4.0 1.0 是 1.0 是
fromCharCode([char0 [, char1 [, ...]]]) 4.0 1.0 是 1.0 是
prototype的属性
constructor 4.0 1.0 是 1.0 是
toString() 3.0 1.0 是 1.0 是
valueOf() 3.0 1.0 是 1.0 是
charAt(pos) 3.0 1.0 是 1.0 是
charCodeAt(pos) 5.5 1.0 是 1.0 是
concat([string1 [, string2 [, ...]]]) 4.0 1.0 是 1.0 是
indexOf(searchString, position) 3.0 1.0 是 1.0 是
lastIndexOf(searchString, position) 3.0 1.0 是 1.0 是
localeCompare(that) 5.5 1.0 是 1.0 是
match(regexp) 4.0 1.0 是 1.0 是
replace(searchValue, replaceValue) 3.0 1.0 是 1.0 是
search(regexp) 4.0 1.0 是 1.0 是
slice(start, end) 4.0 1.0 是 1.0 是
split(separator, limit) 4.0 1.0 是 1.0 是
substring(start, end) 3.0 1.0 是 1.0 是
toLowerCase() 3.0 1.0 是 1.0 是
toLocaleLowerCase(comparefn) 3.0 1.0 是 1.0 是
toUpperCase() 3.0 1.0 是 1.0 是
toLocaleUpperCase() 3.0 1.0 是 1.0 是
prototype的额外属性
substr(start, length) 4.0 1.0 是 1.0 是
实例的属性
length 3.0 1.0 是 1.0 是

Boolean对象

Trident Gecko WebKit Presto Blink
调用为函数
Boolean([value]) 是 是 是 是 是
调用为constructor
new Boolean([value]) 3.0 是 是 是 是
属性
prototype 4.0 是 是 是 是
prototype的属性
constructor 4.0 是 是 是 是
toString() 4.0 是 是 是 是
valueOf() 4.0 是 是 是 是

Number对象

Trident Gecko WebKit Presto
调用为函数
Number([value]) ? 是 是 ?
调用为constructor
new Number([value]) 3.0 1.0 是 1.0
属性
prototype 4.0 1.0 是 1.0
MAX_VALUE 4.0 1.0 是 1.0
MIN_VALUE 4.0 1.0 是 1.0
NaN 4.0 1.0 是 1.0
NEGATIVE_INFINITY 4.0 1.0 是 1.0
POSITIVE_INFINITY 4.0 1.0 是 1.0
prototype的属性
constructor 4.0 1.0 是 1.0
toString([radix]) 4.0 1.0 是 1.0
toLocaleString() 5.5 1.0 是 1.0
valueOf() 4.0 1.0 是 1.0
toFixed(fractionDigits) 5.5 1.0 是 1.0
toExponential(fractionDigits) 5.5 1.0 是 1.0
toPrecision(precision) 5.5 1.0 是 1.0

Math对象

Trident Gecko WebKit Presto
值属性
E 3.0 1.0 是 1.0
LN10 3.0 1.0 是 1.0
LN2 3.0 1.0 是 1.0
LOG2E 3.0 1.0 是 1.0
LOG10E 3.0 1.0 是 1.0
PI 是 是 是 是
SQRT1_2 3.0 1.0 是 1.0
SQRT2 是 是 是 是
函数属性
abs(x) 3.0 1.0 是 1.0
acos(x) 3.0 1.0 是 1.0
asin(x) 3.0 1.0 是 1.0
atan(x) 3.0 1.0 是 1.0
atan2(y, x) 3.0 1.0 是 1.0
ceil(x) 3.0 1.0 是 1.0
cos(x) 3.0 1.0 是 1.0
exp(x) 3.0 1.0 是 1.0
floor(x) 3.0 1.0 是 1.0
log(x) 3.0 1.0 是 1.0
max([value1 [, value2 [, ...]]]) 3.0 1.0 是 1.0
min([value1 [, value2 [, ...]]]) 3.0 1.0 是 1.0
pow(x, y) 3.0 1.0 是 1.0
random() 3.0 1.0 是 1.0
round(x) 3.0 1.0 是 1.0
sin(x) 3.0 1.0 是 1.0
sqrt(x) 3.0 1.0 是 1.0
tan(x) 3.0 1.0 是 1.0

Date对象

Trident Gecko WebKit Presto
调用为函数
Date ([year [, month [, date [, hours [, minutes [, seconds [, ms ]]]]]]]) ? ? ? ?
调用为constructor
new Date (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 4.0 1.0 是 1.0
new Date (value) 4.0 1.0 是 1.0
new Date () 4.0 1.0 是 1.0
属性
prototype 4.0 1.0 是 1.0
parse(string) 3.0 1.0 是 1.0
UTC (year, month [, date [, hours [, minutes [, seconds [, ms ]]]]]) 3.0 1.0 是 1.0
prototype的属性
constructor 4.0 1.0 是 1.0
toString() 4.0 1.0 是 1.0
toDateString() 4.0 1.0 是 1.0
toTimeString() 4.0 1.0 是 1.0
toLocaleString() 4.0 1.0 是 1.0
toLocaleDateString() 4.0 1.0 是 1.0
toLocaleTimeString() 4.0 1.0 是 1.0
valueOf() 4.0 1.0 是 1.0
getTime() 3.0 1.0 是 1.0
getFullYear() 4.0 1.0 是 1.0
getMonth() 3.0 1.0 是 1.0
getUTCMonth() 4.0 1.0 是 1.0
getDate() 3.0 1.0 是 1.0
getUTCDate() 4.0 1.0 是 1.0
getDay() 3.0 1.0 是 1.0
getUTCDay() 4.0 1.0 是 1.0
getHours() 3.0 1.0 是 1.0
getUTCHours() 4.0 1.0 是 1.0
getMinutes() 3.0 1.0 是 1.0
getUTCMinutes() 4.0 1.0 是 1.0
getSeconds() 3.0 1.0 是 1.0
getUTCSeconds() 4.0 1.0 是 1.0
getMilliseconds() 4.0 1.0 是 1.0
getUTCMilliseconds() 4.0 1.0 是 1.0
getTimezoneOffset() 4.0 1.0 是 1.0
setTime(time) 3.0 1.0 是 1.0
setMilliseconds(ms) 4.0 1.0 是 1.0
setUTCMilliseconds(ms) 4.0 1.0 是 1.0
setSeconds(sec [, ms]) 3.0 1.0 是 1.0
setUTCSeconds(sec [, ms]) 4.0 1.0 是 1.0
setMinutes(min [, sec [, ms]]) 3.0 1.0 是 1.0
setUTCMinutes(min [, sec [, ms]]) 4.0 1.0 是 1.0
setHours(hour [, min [, sec [, ms]]]) 4.0 1.0 是 1.0
setUTCHours(hour [, min [, sec [, ms]]]) 4.0 1.0 是 1.0
setDate(date) 4.0 1.0 是 1.0
setUTCDate(date) 4.0 1.0 是 1.0
setMonth(month [, date]) 3.0 1.0 是 1.0
setUTCMonth(month [, date]) 4.0 1.0 是 1.0
setFullYear(year [, month [, date]]) 4.0 1.0 是 1.0
setUTCFullYear(year [, month [, date]]) 4.0 1.0 是 1.0
toUTCString() 4.0 1.0 是 1.0
prototype的额外属性
getYear() 3.0 1.0 是 1.0
setYear(year) 3.0 1.0 是 1.0
toGMTString() 4.0 1.0 是 1.0

RegExp对象

Trident Gecko WebKit Presto
调用为函数
RegExp (pattern, flags) ? ? ? ?
调用为constructor
new RegExp (pattern, flags) 4.0 1.0 是 1.0
属性
prototype 4.0 1.0 是 1.0
prototype的属性
constructor 4.0 1.0 是 1.0
exec(string) 4.0 1.0 是 1.0
test(string) 4.0 1.0 是 1.0
toString() 4.0 1.0 是 1.0
实例的属性
source 4.0 1.0 是 1.0
global 4.0 1.0 是 1.0
ignoreCase 5.5 1.0 是 1.0
multiline 5.5 1.0 是 1.0
lastIndex 4.0 1.0 是 1.0

Error对象

Trident Gecko WebKit Presto
调用为函数
Error (message) ? ? ? ?
调用为constructor
new Error (message) 5.0 1.0 是 1.0
属性
prototype 5.0 1.0 是 1.0
prototype的属性
constructor 5.0 1.0 是 1.0
name 5.5 1.0 是 1.0
message 5.5 1.0 是 1.0
toString() 5.0 1.0 是 1.0

NativeError对象

Trident Gecko WebKit Presto
调用为函数
EvalError (message) ? 1.0 是 ?
RangeError (message) ? 1.0 是 ?
ReferenceError (message) ? 1.0 是 ?
SyntaxError (message) ? 1.0 是 ?
TypeError (message) ? 1.0 是 ?
URIError (message) ? 1.0 是 ?
调用为constructor
new EvalError (message) ? 1.0 是 ?
new RangeError (message) ? 1.0 是 ?
new ReferenceError (message) ? 1.0 是 ?
new SyntaxError (message) ? 1.0 是 ?
new TypeError (message) ? 1.0 是 ?
new URIError (message) ? 1.0 是 ?
属性
prototype ? 1.0 ? ?
prototype的属性
constructor ? 1.0 ? ?
name ? 1.0 是 ?
message ? 1.0 是 ?

引用

  1. ^ Gecko versions and application versions (页面存档备份,存于互联网档案馆).
  2. ^ E4X, Mozilla, [2019-05-18], (原始内容存档于2013-09-30) 
  3. ^ ECMAScript 5 Arrays, Microsoft, [2019-05-18], (原始内容存档于2010-06-27) 

延伸阅读

外部链接