Abstract

“ECMAScript is a standard for object-oriented programming languages. Superficially, its implementations, like JavaScript and JScript, are very similar. They are therefore often discussed in a simplified way. But does this approach hold water against methodical testing?

In this work, features of ECMAScript and its common implementations are compared with regard to their standards compliance and compatibility. A web application is created for the registration of features and associated test cases. Using this application, the test cases are run in web browsers and the test results are stored in a database. The results are correlated with the market share of the used web browsers and their degree of vendor support. Thus, features can be defined as safe for use in web browsers, which makes efficiency-reducing compatibility measures unnecessary.”[1]

Foreword and Rationale

↑ Table of contents

“Learn reason above all. Learn clear thought: learn to know what is from what seems to be, and what you wish to be.
This is the key to everything: the truth of reality, the reality of truth. What is will set you free.”

—Surak

In a discussion, especially a technical one, it is very important that all participants know what is being talked about, so that misunderstandings can be avoided. Clear language is required. It can be achieved only by using terms that are well-defined; they should be unambiguous and one should be able to look them up in official reference material.

Some people talk about a programming language they call “javascript”. This is supposed to be one fully specified and universally implemented programming language that provides, in dialects to a varying degree, the capabilities to manipulate runtime environments such as web browsers.

In fact, there is no “javascript”; there is JavaScript. This is not just a matter of letter case: Originally, “JavaScript” was only the name of one implementation of ECMAScript.

“A scripting language is a programming language that is used to manipulate, customise, and automate the facilities of an existing system.”[2] The ECMAScript Language Specification is a standard for extensible scripting languages. It is published in Editions. Several current versions of scripting languages are implementations of an Edition of ECMAScript.[3][4][5][6][7][8][9] But its first Edition was based itself on two scripting languages that were already implemented for use in web browsers: Netscape JavaScript 1.1 and Microsoft JScript 1.0.[10]

There are no dialects of “javascript”; there are several implementations of ECMAScript that are widely distributed, primarily through web browsers. The features that allow one to manipulate web browsers are not part of any such programming language; they are environment-dependent implementations of language-independent APIs for which language bindings are specified[11] so that they can be used with programming languages.[12]

The same, but not the same

Superficially, ECMAScript implementations are very similar. Several of them even bear or are advertized using the “JavaScript” name now. It is therefore tempting to discuss them in a simplified way using an umbrella term such as “javascript”.[13] But this approach is not without problems. ECMAScript gives its conforming implementations a wide latitude. The Editions of ECMAScript and their implementations have been developed in parallel, and are partially informing each other. Also, some implementations are not conforming in some features. As a result, ECMAScript implementations are in fact very different from one another.

It does matter which implementation is being discussed. Using ambiguous umbrella terms, without providing a clear definition for them, cannot be considered appropriate style in a technical discussion.

Hence, for lack of a better alternative, the precise and equally concise term ECMAScript implementation(s) should be used when talking about features that several implementations (ought to) have in common (per the ECMAScript Language Specification). And whenever it was talked about one particular implementation, its full name should be used, like Mozilla JavaScript. In all other instances, the term “JavaScript” (in any letter case) should not be used.

What is the Matrix?

This overview – the ECMAScript Support Matrix – began as a comparison of different “JavaScript” features and, as time passed and understanding grew, evolved into a comparison between the major ECMAScript implementations, detailing the differences, the quirks and the bugs. It has been serving its author (and its dedicated readers) for years in writing client-side scripts that work cross-browser, and has been helping to see the distinction between core language features, and APIs with language binding, like the DOM. (The features of the latter API will be compared in another Matrix.)

Whenever you read from this author that key line from arguably the most groundbreaking hacker movie ―“The Matrix has you!”― a suggestion is being considered as a contribution to this work. See below.

Reloaded

Despite several valuable contributions, the previous version of this work has primarily suffered from the fact that most language features could only be tested, and test results documented, as far as the resources of its author permitted. Furthermore, it was not possible without considerable effort to detail the differences between versions of the same implementation. Test cases were incomplete and sketchy at best.

This version is based on a novel, scientific approach[1], with which features can be tested by anyone in the runtime environments available to them, and those test results can be fed back to the overview immediately, detailing automatically the differences between the implementations and the versions of the same implementation.

As a result, the general recommendation as to whether a feature can be considered safe (see below) can be updated immediately and semi-automatically as well. This is assumed to further improve the overall quality of design decisions with regard to language features (although the caveat as to that must stay in place).

Language Features

↑ Table of contents

The following table lists features of ECMAScript and its implementations, with the Edition or version that introduced it; furthermore, information about features that have been deprecated is included.

Features are highlighted with a greenish background color if they can be considered safe to use without prior feature test even when they do not appear to be formally specified or to be supported among all versions of all implementations considered here. This is based on the fact that all minimum versions of the implementations that a feature requires can be considered obsolete because the user agents known to implement them can be considered obsolete (see the respective version information for details). Note that this assessment is likely to be subject to change as more implementations are investigated. If taken as a recommendation for design decisions, it should be taken as a light one.

The contents of this table are based on what could be found in the Editions of ECMAScript and in vendor's online documentation to date. They are completed with results from test cases that have been run in a careful selection of host environments, and do not claim to be accurate or complete. Any correction/addition as to how things really are is welcome and will be credited where it is due.

Known display problems

  • Firefox 3.0.x: If the scrollable table body flows out of the table, you are observing Bug 423823, fixed since Firefox 3.0.2. The Firefox 3.0 branch has met its end-of-life on 2010-03-30 CE. If you are still using Firefox 3.0.x as your primary browser, you are strongly recommended to update Firefox (but see below). As an alternative, you can toggle table body scrollability.
  • Firefox 4.0+: The support for scrollable table body has been removed per Bug 28800. This violates the CSS3 Basic Box Model specification, which is only a Working Draft at the time of writing but is intended to replace the corresponding parts of CSS 2.1. If you want this useful feature (back), please comment on and vote for Bug 67421.

Since both of these were regressions, this author deems it necessary not to cover any of them with a workaround.

Language features
! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ECMAScript This impl.[14]
JavaScript JScript Opera KJS JSC V8
The following host environments have been used for the tests:
  • Netscape/Mozilla JavaScript
    • Version 1.5 in Firefox 1.0.8 for Windows
      (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.13) Gecko/20060410 Firefox/1.0.8)
    • Version 1.6 in Firefox for Windows 1.5.0.12
      (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.12) Gecko/20070508 Firefox/1.5.0.12)
    • Version 1.7 in Firefox for Windows 2.0
      (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0)
    • Version 1.8 in Firefox for Windows 3.0.19
      (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.19) Gecko/2010031422 Firefox/3.0.19)
    • Version 1.8.1 in Debian Iceape (SeaMonkey) 2.0.11-9
      (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20111108 Iceape/2.0.11)
    • Version 10 in Debian Iceweasel (Firefox) 10.0.2
      (Mozilla/5.0 (X11; Linux i686; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 Iceweasel/10.0.2)
    • Version 21 in Mozilla Firefox 21 for Linux
      (Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0)
    • Version 21 in
      ()
    • Version 22 in Mozilla Firefox 22 for Windows on Windows 7 64-bit
      (Mozilla/5.0 (Windows NT 6.0; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0)
    • Version 23 in
      (Mozilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0)
    • Version 27 in
      (Mozilla/5.0 (Windows NT 5.1; rv:27.0) Gecko/20100101 Firefox/27.0)
  • Microsoft JScript
    • Version 5.5.6330 in Microsoft Internet Explorer 5.50.4807.2300
      (Mozilla/4.0 (compatible; MSIE 5.5; Windows 98))
    • Version 5.6.6626 in Internet Explorer 6.0.2800.1106
      (Mozilla/4.0 (compatible; MSIE 6.0; Windows 98))
    • Version 5.7.22589 in Microsoft Internet Explorer 7.0.5730.13 for Windows Server 2003
      (Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729))
    • Version 5.8.23141 in Microsoft Internet Explorer 8.0.6001.18702IC for Windows XP Pro 2002 SP3
      (Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729))
    • Version 9.0.16440 in Microsoft Internet Explorer 9.0.8112.16421 for Windows 7 Pro 32-bit SP1
      (Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0))
    • Version 9.0.16496 in
      (Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0))
    • Version 10.0.16578 in Internet Explorer 10.0 for Windows 8
      (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0))
    • Version 10.0.16660 in
      (Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0))
    • Version 11.0.16412 in
      (Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko)
    • Version 11.0.16428 in
      (Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko)
    • Version 11.0.16518 in
      (Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko)
    • Version 11.0.17278 in
      (Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; MAMIJS; rv:11.0) like Gecko)
  • Opera ECMAScript
    • Version 7.02 in Opera 7.02.2668 for Windows XP 32-bit
      (Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.02 [en])
    • Version 8.0 in Opera 8.0.7561 for Windows
      (Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 8.0)
    • Version 9.27 in Opera 9.27.8841 for Windows
      (Opera/9.27 (Windows NT 5.1; U; en))
    • Version 9.52 in Opera 9.52.10108 for Windows
      (Opera/9.52 (Windows NT 5.1; U; en))
    • Version 9.62 in Opera 9.62.10467 for Windows
      (Opera/9.62 (Windows NT 5.1; U; en) Presto/2.1.1)
    • Version 9.64 in Opera 9.64.10487 for Windows
      (Opera/9.64 (Windows NT 5.1; U; en) Presto/2.1.1)
    • Version 10.53 in Opera 10.53.3374 for Windows
      (Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.24 Version/10.53)
    • Version 10.54 in Opera 10.54.3423 for Windows
      (Opera/9.80 (Windows NT 5.1; U; en) Presto/2.5.24 Version/10.54)
    • Version 11.61 in Opera 11.61.1250 for Linux
      (Opera/9.80 (X11; Linux i686; U; en) Presto/2.10.229 Version/11.61)
    • Version 12.15 in Opera 12.15 for Windows on Windows 7 64-bit
      (Opera/9.80 (Windows NT 6.1; WOW64) Presto/2.12.388 Version/12.15)
  • KDE JavaScript
    • Version 4.6.5 in Konqueror for Linux 4.6.5
      (Mozilla/5.0 (compatible; Konqueror/4.6; Linux 2.6.39.3-pe; X11; i686; de) KHTML/4.6.5 (like Gecko))
  • Apple JavaScriptCore
    • Version 531.22.7 in Apple Safari for Windows 4.0.5 (531.22.7)
      (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7)
    • Version 7533.18.5 in Apple Safari for Windows 5.0.2 (7533.18.5)
      (Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5)
    • Version 7534.52.7 in Apple Safari 5.1.2 (7534.52.7) for Windows 7 32-bit SP1
      (Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.52.7 (KHTML, like Gecko) Version/5.1.2 Safari/534.52.7)
  • Google V8
    • Version 3.19.17 in Chrome 29.0.1535.2 for Mac OS X
      (Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1535.2 Safari/537.36)
    • Version 3.7.12.12 in Chrome 17.0.963.78 (Developer Build 125577 Linux)
      (Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.78 Safari/535.11)
    • Version 3.8.9.5 in Google Chrome 18.0.1025.45 beta for Linux
      (Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19)
    • Version 3.11.10.6 in Chromium 21.0.1180.89 for Linux
      (Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1)
    • Version 3.12.19.4 in Chromium 22.0.1229.94 for Linux
      (Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4)
    • Version 3.15.11.5 in Chromium/Chrome 25.0.1364.160 for Linux
      (Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22)
    • Version 3.17.6.14 in Chromium 27.0.1453.110 for Linux
      (Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36)
! 1 [11.4.9]
1.5 10/10 (+)
5.5.6330 10/10 (+)
7.02 10/10 (+)
4.6.5 10/10 (+)
531.22.7 10/10 (+)
3.19.17 10/10 (+)
!== 3 [11.9.5]
1.5 12/12 (+)
5.5.6330 12/12 (+)
7.02 12/12 (+)
4.6.5 12/12 (+)
531.22.7 12/12 (+)
3.19.17 12/12 (+)
"\uhhhh" : string 1 [7.8.4]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
"foo\
bar" : string
5 [7.8.4]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 0/1 (−)
8.0 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
"use strict"; 5 [Annex C]
1.5 4/12 (*)
10 11/12 (*)
5.5.6330 4/12 (*)
9.0.16440 0/12 (−)
10.0.16578 11/12 (*)
7.02 4/12 (*)
8.0 0/12 (−)
9.52 4/12 (*)
11.61 11/12 (*)
12.15 4/12 (*)
4.6.5 4/12 (*)
531.22.7 4/12 (*)
7533.18.5 1/12 (*)
7534.52.7 11/12 (*)
3.19.17 8/12 (*)
3.7.12.12 12/12 (+)
3.11.10.6 11/12 (*)
3.15.11.5 8/12 (*)
(String in Object) : boolean 3 [11.8.7]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
+expression : number 1 [11.4.6]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/(?!)/ : RegExp 3 [15.10.2.8]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/(?:)/ : RegExp 3 [15.10.2.8]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/(?=)/ : RegExp 3 [15.10.2.8]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/()\1/ : RegExp 3 [15.10.2.9]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/(+?|*?)/ : RegExp 3 [15.10.2.7]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/[/]/ : RegExp 5 [7.8.5]
1.5 0/1 (−)
1.6 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/[^]/ : RegExp 3 [15.10.2.13]
1.5 1/1 (+)
5.5.6330 0/1 (−)
9.0.16440 1/1 (+)
7.02 0/1 (−)
10.53 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
/\uhhhh/ : RegExp 3 [15.10.2.10]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
//[g][i] : RegExp
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
//[g][i][m]: RegExp 3 [15.10.4.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
//[g][i][m][y] : RegExp
1.5 0/1 (−)
10 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
= function identifier() {} : Function 3 [13]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
= function () expression : Function
1.5 0/1 (−)
1.8 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
= function () {} : Function 3 [13]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
== 1 [11.9.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
=== 3 [11.9.4]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
@cc_on
@debug
@if
@position
@set
[expression for each (propertyValue in Object) [if (condition)]] : Array[V]
1.5 0/1 (−)
1.7 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
[value, ] : Array 3 [11.1.4]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
[value, ] : Array 3 [11.1.4]
1.5 1/1 (+)
5.5.6330 0/1 (−)
9.0.16440 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
[var] [var1, [var2], var3, ] = Array
1.5 0/2 (−)
1.7 2/2 (+)
5.5.6330 0/2 (−)
7.02 0/2 (−)
8.0 1/2 (*)
10.53 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
abstract 4
new ActiveXObject("serverName.typeName"[, location : String])
1.5 0/1 (−)
5.5.6330 1/1 (+)
11.0.16412 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
arguments 1 [10.6]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
arguments : Arguments 5 [10.6]
1.5 0/1 (−)
10 1/1 (+)
5.5.6330 0/1 (−)
9.0.16440 1/1 (+)
7.02 0/1 (−)
11.61 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
arguments.callee : Function 1 [10.6]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
arguments.length : int 1
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Array() 1 [15.4.1]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
8.0 4/6 (*)
9.52 6/6 (+)
12.15 4/6 (*)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Array.every(iterable, callback : Function) : boolean
1.5 0/3 (−)
1.6 3/3 (+)
5.5.6330 0/3 (−)
7.02 0/3 (−)
12.15 3/3 (+)
4.6.5 0/3 (−)
531.22.7 0/3 (−)
3.19.17 0/3 (−)
Array.isArray(arg) : boolean 5 [15.4.3.2]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
array.length : int 1 [15.4.5.2]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Array.prototype : Array 1 [15.4.3.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Array.prototype.concat([item1[, item2[, ]]]) : Array 3 [15.4.4.4][G]
1.5 5/6 (*)
1.6 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
9.27 4/6 (*)
9.52 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Array.prototype.constructor : Array 1 [15.4.4.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Array.prototype.every(callback : Function[, thisValue]) : boolean 5 [15.4.4.16][G]
1.5 0/6 (−)
1.6 6/6 (+)
5.5.6330 0/6 (−)
9.0.16440 6/6 (+)
7.02 0/6 (−)
8.0 1/6 (*)
9.52 6/6 (+)
12.15 5/6 (*)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Array.prototype.filter(callback : Function[, thisArg : Object]) : int 5 [15.4.4.20][G]
1.5 0/6 (−)
1.6 6/6 (+)
5.5.6330 0/6 (−)
9.0.16440 6/6 (+)
7.02 0/6 (−)
8.0 1/6 (*)
9.52 6/6 (+)
12.15 5/6 (*)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Array.prototype.forEach(callback : Function[, thisArg : Object]) 5 [15.4.4.18][G]
1.5 0/7 (−)
1.6 7/7 (+)
5.5.6330 0/7 (−)
9.0.16440 7/7 (+)
7.02 0/7 (−)
9.52 7/7 (+)
12.15 6/7 (*)
4.6.5 7/7 (+)
531.22.7 7/7 (+)
3.19.17 7/7 (+)
Array.prototype.indexOf(searchElement[, fromIndex : int]) : int 5 [15.4.4.14][G]
1.5 0/12 (−)
1.6 12/12 (+)
1.7 11/12 (*)
1.8 12/12 (+)
5.5.6330 0/12 (−)
9.0.16440 12/12 (+)
7.02 0/12 (−)
8.0 1/12 (*)
9.52 12/12 (+)
4.6.5 12/12 (+)
531.22.7 12/12 (+)
3.19.17 12/12 (+)
! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ECMAScript This impl.[14]
JavaScript JScript Opera KJS JSC V8
Array.prototype.join(separator : String) : string 1 [15.4.4.3][G]
1.5 9/9 (+)
5.5.6330 9/9 (+)
7.02 9/9 (+)
4.6.5 9/9 (+)
531.22.7 9/9 (+)
3.19.17 9/9 (+)
Array.prototype.lastIndexOf(searchElement[, fromIndex : Number|int]) : number|int 5 [15.4.4.15][G]
1.5 0/12 (−)
1.6 12/12 (+)
5.5.6330 0/12 (−)
9.0.16440 12/12 (+)
7.02 0/12 (−)
8.0 1/12 (*)
9.52 12/12 (+)
4.6.5 12/12 (+)
531.22.7 12/12 (+)
3.19.17 12/12 (+)
Array.prototype.length : int 1 [15.4.4]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Array.prototype.map(callback : Function[, thisArg : Object]) : Array 5 [15.4.4.19]
1.5 1/11 (*)
1.6 11/11 (+)
5.5.6330 1/11 (*)
9.0.16440 11/11 (+)
7.02 1/11 (*)
8.0 4/11 (*)
9.52 11/11 (+)
4.6.5 11/11 (+)
531.22.7 11/11 (+)
3.19.17 11/11 (+)
Array.prototype.pop() 3 [15.4.4.6][G]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 5/6 (*)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Array.prototype.push([item1[, item2[, ]]]) : int 3 [15.4.4.7][G]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
Array.prototype.reduce(callback : Function[, initialValue]) : any 5 [15.4.4.21][G]
1.5 0/7 (−)
1.8 7/7 (+)
5.5.6330 0/7 (−)
9.0.16440 7/7 (+)
7.02 0/7 (−)
8.0 2/7 (*)
9.52 0/7 (−)
10.53 7/7 (+)
12.15 5/7 (*)
4.6.5 7/7 (+)
531.22.7 7/7 (+)
3.19.17 7/7 (+)
Array.prototype.reduceRight(callback : Function[, initialValue]) : any 5 [15.4.4.22][G]
1.5 0/8 (−)
1.8 8/8 (+)
5.5.6330 0/8 (−)
9.0.16440 8/8 (+)
7.02 0/8 (−)
8.0 2/8 (*)
9.52 0/8 (−)
10.53 8/8 (+)
12.15 5/8 (*)
4.6.5 7/8 (*)
531.22.7 8/8 (+)
3.19.17 8/8 (+)
Array.prototype.reverse() : Array 1 [15.4.4.4][G]
1.5 4/4 (+)
5.5.6330 4/4 (+)
7.02 4/4 (+)
4.6.5 4/4 (+)
531.22.7 4/4 (+)
3.19.17 4/4 (+)
Array.prototype.shift() 3 [15.4.4.9][G]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
Array.prototype.slice(start : int[, end : int]) : Array 3 [15.4.4.10][G]
1.5 7/8 (*)
1.6 8/8 (+)
5.5.6330 8/8 (+)
7.02 7/8 (*)
9.52 8/8 (+)
4.6.5 8/8 (+)
531.22.7 8/8 (+)
3.19.17 8/8 (+)
Array.prototype.some(callback : Function[, thisValue]) : boolean 5 [15.4.4.17][G]
1.5 1/11 (*)
1.6 11/11 (+)
5.5.6330 1/11 (*)
9.0.16440 11/11 (+)
7.02 1/11 (*)
8.0 3/11 (*)
9.52 11/11 (+)
12.15 10/11 (*)
4.6.5 11/11 (+)
531.22.7 11/11 (+)
3.19.17 11/11 (+)
Array.prototype.sort([comparator : Function]) : Object 1 [15.4.4.5][G]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
Array.prototype.splice(start : int, deleteCount : int[, item1[, item2[, ]]]) : Array 3 [15.4.4.12][G]
1.5 5/6 (*)
1.6 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Array.prototype.toSource() : string
1.5 2/2 (+)
5.5.6330 0/2 (−)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
Array.prototype.toString() : string 1 [15.4.4.4][G]
1.5 3/5 (*)
10 5/5 (+)
5.5.6330 3/5 (*)
9.0.16440 5/5 (+)
7.02 3/5 (*)
10.53 5/5 (+)
4.6.5 3/5 (*)
531.22.7 3/5 (*)
3.19.17 5/5 (+)
Array.prototype.unshift() : number|int 3 [15.4.4.13][G]
1.5 5/5 (+)
5.5.6330 4/5 (*)
5.8.23141 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
Array.some(iterable, callback : Function) : boolean
1.5 0/10 (−)
1.6 9/10 (*)
10 10/10 (+)
5.5.6330 0/10 (−)
7.02 0/10 (−)
8.0 3/10 (*)
9.52 0/10 (−)
12.15 8/10 (*)
4.6.5 0/10 (−)
531.22.7 0/10 (−)
3.19.17 0/10 (−)
boolean 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Boolean() 1 [15.6.1.1]
1.5 11/11 (+)
5.5.6330 11/11 (+)
7.02 11/11 (+)
4.6.5 11/11 (+)
531.22.7 11/11 (+)
3.19.17 11/11 (+)
Boolean.prototype : Boolean 1 [15.6.3.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Boolean.prototype.toSource() : string
1.5 1/3 (*)
5.5.6330 0/3 (−)
7.02 0/3 (−)
4.6.5 0/3 (−)
531.22.7 0/3 (−)
3.19.17 0/3 (−)
Boolean.prototype.toString() : string 1 [15.6.4.2]
1.5 4/4 (+)
5.5.6330 4/4 (+)
7.02 4/4 (+)
8.0 3/4 (*)
9.52 4/4 (+)
12.15 3/4 (*)
4.6.5 4/4 (+)
531.22.7 4/4 (+)
3.19.17 4/4 (+)
Boolean.prototype.valueOf() : boolean 1 [15.6.4.3]
1.5 4/4 (+)
5.5.6330 4/4 (+)
7.02 4/4 (+)
8.0 3/4 (*)
9.52 4/4 (+)
12.15 3/4 (*)
4.6.5 4/4 (+)
531.22.7 4/4 (+)
3.19.17 4/4 (+)
byte 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
char 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
class 4
const 4
1.5 2/2 (+)
5.5.6330 0/2 (−)
11.0.16412 1/2 (*)
7.02 0/2 (−)
9.27 1/2 (*)
4.6.5 0/2 (−)
531.22.7 1/2 (*)
3.19.17 2/2 (+)
Date.now() 5 [15.9.4.4]
1.5 2/2 (+)
5.5.6330 0/2 (−)
9.0.16440 2/2 (+)
7.02 0/2 (−)
10.53 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype : Date 1 [15.9.4.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Date.prototype.getFullYear() : number|int 1 [15.9.5.6]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getMilliseconds() : number|int 1 [15.9.5.20]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCDate() : number|int 1 [15.9.5.11]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCDay() : number|int 1 [15.9.5.13]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCFullYear() : number|int 1 [15.9.5.7]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCHours() : number|int 1 [15.9.5.14]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCMilliseconds() : number|int 1 [15.9.5.21]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCMinutes() : number|int 1 [15.9.5.17]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCMonth() : number|int 1 [15.9.5.9]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getUTCSeconds() : number|int 1 [15.9.5.19]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.getVarDate()
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Date.prototype.setFullYear(year : Number|int[, month : Number|int[, date : Number|int]]) : number|int 1 [15.9.5.36]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Date.prototype.setMilliseconds(Number|int) : number|int 1 [15.9.5.24]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.setUTCDate(Number|int) : number|int 1 [15.9.5.33]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.setUTCFullYear(year : Number|int[, month : Number|int[, date : Number|int]]) : number|int 1 [15.9.5.37]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Date.prototype.setUTCHours(hours : Number|int[, minutes : Number|int[, seconds : Number|int[, ms : Number|int]]]) : number|int 1 [15.9.5.31]
1.5 7/7 (+)
5.5.6330 7/7 (+)
7.02 7/7 (+)
4.6.5 7/7 (+)
531.22.7 7/7 (+)
3.19.17 7/7 (+)
Date.prototype.setUTCMilliseconds(Number|int) : number|int 1 [15.9.5.25]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.setUTCMinutes(minutes : Number|int[, seconds : Number|int[, ms : Number|int]]) : number|int 1 [15.9.5.29]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
Date.prototype.setUTCMonth(month : Number|int[, date : Number|int]) : number|int 1 [15.9.5.35]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
Date.prototype.setUTCSeconds(seconds : Number|int[, ms : Number|int]) : number|int 1 [15.9.5.27]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ECMAScript This impl.[14]
JavaScript JScript Opera KJS JSC V8
Date.prototype.toDateString() : string 3 [15.9.5.13]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype.toGMTString() : string 1 [15.9.5.41]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype.toISOString() : string 5 [15.9.5.43]
1.5 0/4 (−)
1.8.1 3/4 (*)
10 4/4 (+)
5.5.6330 0/4 (−)
9.0.16440 4/4 (+)
7.02 0/4 (−)
8.0 1/4 (*)
9.52 0/4 (−)
10.53 2/4 (*)
11.61 4/4 (+)
12.15 3/4 (*)
4.6.5 0/4 (−)
531.22.7 2/4 (*)
7533.18.5 3/4 (*)
3.19.17 4/4 (+)
Date.prototype.toJSON([key]) : string 5 [15.9.5.44]
1.5 0/6 (−)
1.8.1 4/6 (*)
10 6/6 (+)
5.5.6330 0/6 (−)
5.8.23141 3/6 (*)
9.0.16440 6/6 (+)
7.02 0/6 (−)
8.0 1/6 (*)
9.52 0/6 (−)
10.53 3/6 (*)
11.61 4/6 (*)
12.15 5/6 (*)
4.6.5 0/6 (−)
531.22.7 4/6 (*)
7533.18.5 5/6 (*)
3.19.17 6/6 (+)
Date.prototype.toLocaleDateString() : string 3
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype.toLocaleFormat(format : String) : string
1.5 0/2 (−)
1.6 2/2 (+)
5.5.6330 0/2 (−)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
Date.prototype.toLocaleString() : string 1 [15.9.5.39]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype.toLocaleTimeString() : string 3 [15.9.5.7]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype.toSource() : string
1.5 2/2 (+)
5.5.6330 0/2 (−)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
Date.prototype.toString() : string 1 [15.9.5.2]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Date.prototype.toTimeString() : string 3 [15.9.5.4]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Date.prototype.toUTCString() : string 1 [15.9.5.40]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
debugger 5 [12.15]
decimal 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
decodeURI(String) : string 3 [15.1.3.1]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
8.0 2/3 (*)
9.52 3/3 (+)
12.15 2/3 (*)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
decodeURIComponent(String) : string 3 [15.1.3.2]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
8.0 2/3 (*)
9.52 3/3 (+)
12.15 2/3 (*)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
delete 1 [11.4.1]
1.5 4/4 (+)
5.5.6330 2/4 (*)
9.0.16440 3/4 (*)
10.0.16578 4/4 (+)
7.02 2/4 (*)
8.0 3/4 (*)
10.53 4/4 (+)
4.6.5 4/4 (+)
531.22.7 4/4 (+)
3.19.17 4/4 (+)
double 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
do…while 3 [12.6.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
encodeURI(String) 3 [15.1.3.3]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
encodeURIComponent(String) : string 3 [15.1.3.4]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
enum 4
Enumerator()
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Error([message : String]) 3 [15.11]
1.5 3/3 (+)
5.5.6330 2/3 (*)
9.0.16440 3/3 (+)
7.02 1/3 (*)
8.0 2/3 (*)
9.52 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
error.description : string
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
error.number : number|int
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Error.prototype.message : string 3 [15.11.4.3]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Error.prototype.name : string 3 [15.11.4.2]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
error.stack : string
1.5 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
10.53 1/1 (+)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 1/1 (+)
expando
final 4
float 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
for each ([var] identifier in Object) E4X [12.3]
1.5 0/4 (−)
1.6 4/4 (+)
21 0/4 (−)
5.5.6330 0/4 (−)
7.02 0/4 (−)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
3.19.17 0/4 (−)
function get identifier() : Function
function set identifier() : Function
Function([p1 : String[, p2 : String[, [, pn : String]]],] body : String) : Function 1 [15.3.1]
1.5 8/8 (+)
5.5.6330 8/8 (+)
7.02 8/8 (+)
8.0 6/8 (*)
9.52 8/8 (+)
12.15 6/8 (*)
4.6.5 8/8 (+)
531.22.7 8/8 (+)
3.19.17 8/8 (+)
function.arguments : arguments 1 [15.3.5.3]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 0/1 (−)
8.0 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
function.arguments.callee : Function
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
function.arguments.length : number|int
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
function.arity : number|int
1.5 1/1 (+)
10 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
function.caller : Function|null
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 0/1 (−)
9.62 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
function.length : number|int 1 [15.3.5.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
function.prototype 1 [15.3.5.2]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Function.prototype : Function 1 [15.3.3.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Function.prototype.apply([thisArg : Object|undefined[, argArray : Array|arguments]]) 3 [15.3.4.3]
1.5 11/11 (+)
5.5.6330 10/11 (*)
9.0.16440 11/11 (+)
7.02 11/11 (+)
8.0 9/11 (*)
9.52 11/11 (+)
12.15 9/11 (*)
4.6.5 11/11 (+)
531.22.7 11/11 (+)
3.19.17 11/11 (+)
Function.prototype.arguments.caller : Function|null
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Function.prototype.bind(thisArg[, arg1[, arg2, ]]) : Function 5 [15.3.4.5]
1.5 0/4 (−)
10 4/4 (+)
5.5.6330 0/4 (−)
9.0.16440 4/4 (+)
7.02 0/4 (−)
11.61 4/4 (+)
12.15 3/4 (*)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
3.19.17 4/4 (+)
Function.prototype.call([thisArg : Object|undefined[, arg1[, arg2, ]]) 3 [15.3.4.4]
1.5 8/8 (+)
5.5.6330 8/8 (+)
7.02 8/8 (+)
8.0 7/8 (*)
9.52 8/8 (+)
12.15 7/8 (*)
4.6.5 8/8 (+)
531.22.7 8/8 (+)
3.19.17 8/8 (+)
Function.prototype.name : string
22 1/2 (*)
9.0.16440 0/2 (−)
12.15 2/2 (+)
3.17.6.14 2/2 (+)
Function.prototype.toSource() : string
1.5 2/2 (+)
5.5.6330 0/2 (−)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ECMAScript This impl.[14]
JavaScript JScript Opera KJS JSC V8
generator.close()
1.5 0/1 (−)
1.7 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
generator.next()
1.5 0/1 (−)
1.7 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
generator.send(expression)
1.5 0/1 (−)
1.7 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
generator.throw(expression)
1.5 0/1 (−)
1.7 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
GetObject()
1.5 0/1 (−)
5.5.6330 1/1 (+)
9.0.16440 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Global object 1 [15.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
hide 4
identifier : type 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
if () { function f() { }; }
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
import 4
Infinity : number 1 [15.1.1.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
instanceof 3 [11.8.6]
1.5 2/3 (*)
1.6 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
8.0 1/3 (*)
9.52 3/3 (+)
4.6.5 2/3 (*)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
int 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
interface 4
internal 4
isFinite() : boolean 1 [15.1.2.5]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
Iterator(Object) : Iterator
1.5 0/4 (−)
1.7 4/4 (+)
5.5.6330 0/4 (−)
7.02 0/4 (−)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
3.19.17 0/4 (−)
JSON.parse(text : String[,reviver : Function]) : Object 5 [15.12.2]
1.5 0/10 (−)
1.8.1 9/10 (*)
10 10/10 (+)
5.5.6330 0/10 (−)
5.8.23141 10/10 (+)
7.02 0/10 (−)
10.53 7/10 (*)
12.15 6/10 (*)
4.6.5 0/10 (−)
531.22.7 9/10 (*)
3.19.17 10/10 (+)
JSON.stringify(value[, replacer[, space]]) : string 5 [15.12.3]
1.5 0/3 (−)
1.8.1 3/3 (+)
5.5.6330 0/3 (−)
5.8.23141 3/3 (+)
7.02 0/3 (−)
10.53 3/3 (+)
4.6.5 0/3 (−)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
label: 3 [12.12]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
let (assignment[, ]) { [statements] }
let (assignment[, ]expression
let assignment[, ]
long 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Math.atan2(y : Number, x : Number) : number 1 [15.8.2.5]
11.0.17278 24/24 (+)
Math.max(a : Number, b : Number) : number 1 [15.8.2.11]
1.5 9/9 (+)
5.5.6330 9/9 (+)
7.02 9/9 (+)
4.6.5 9/9 (+)
531.22.7 9/9 (+)
3.19.17 9/9 (+)
Math.max(a : Number, b : Number, ) : number 3 [15.8.2.11]
1.5 7/7 (+)
5.5.6330 7/7 (+)
7.02 7/7 (+)
4.6.5 7/7 (+)
531.22.7 7/7 (+)
3.19.17 7/7 (+)
Math.min(a : Number, b : Number) : number 1 [15.8.2.12]
1.5 9/9 (+)
5.5.6330 9/9 (+)
7.02 9/9 (+)
4.6.5 9/9 (+)
531.22.7 9/9 (+)
3.19.17 9/9 (+)
Math.min(a : Number, b : Number, ) : number 3 [15.8.2.12]
1.5 7/7 (+)
5.5.6330 7/7 (+)
7.02 7/7 (+)
4.6.5 7/7 (+)
531.22.7 7/7 (+)
3.19.17 7/7 (+)
Math.sign(x : Number) : number 6 [20.2.2.28]
11.0.17278 0/6 (−)
NaN : number 1 [15.1.1.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Number([expression]) : number 1 [15.7.1]
1.5 15/15 (+)
5.5.6330 15/15 (+)
7.02 15/15 (+)
4.6.5 15/15 (+)
531.22.7 15/15 (+)
3.19.17 15/15 (+)
Number.isNaN(value) : boolean 6 [20.1.2.4]
11.0.17278 0/3 (−)
Number.MAX_VALUE : number 1 [15.7.3.2]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Number.MIN_VALUE : number 1 [15.7.3.3]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Number.NaN : number 1 [15.7.3.4]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Number.NEGATIVE_INFINITY : number 1 [15.7.3.5]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Number.POSITIVE_INFINITY : number 1 [15.7.3.6]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Number.prototype : Number 1 [15.7.3.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Number.prototype.constructor 5.1 [15.7.4.1]
21 1/1 (+)
9.0.16440 0/1 (−)
9.0.16496 1/1 (+)
12.15 1/1 (+)
3.19.17 1/1 (+)
Number.prototype.toFixed(fractionDigits : Number) 5.1 [15.7.4.5]
21 1/1 (+)
9.0.16440 0/1 (−)
9.0.16496 1/1 (+)
12.15 1/1 (+)
3.19.17 1/1 (+)
Number.prototype.toPrecision(precision: Number) 5.1 [15.7.4.7]
21 1/1 (+)
9.0.16440 0/1 (−)
9.0.16496 1/1 (+)
12.15 1/1 (+)
3.19.17 1/1 (+)
Number.prototype.toString() : string 1 [15.7.4.2]
1.5 9/11 (*)
10 11/11 (+)
5.5.6330 9/11 (*)
9.0.16440 11/11 (+)
7.02 9/11 (*)
8.0 8/11 (*)
9.52 9/11 (*)
10.53 11/11 (+)
12.15 8/11 (*)
4.6.5 11/11 (+)
531.22.7 11/11 (+)
3.19.17 11/11 (+)
Object([expression]) : Object 1 [15.2.1]
1.5 8/8 (+)
5.5.6330 8/8 (+)
7.02 8/8 (+)
4.6.5 8/8 (+)
531.22.7 8/8 (+)
3.19.17 8/8 (+)
object.__iterator__
object.__noSuchMethod__ : Function
1.5 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
8.0 1/1 (+)
9.52 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
Object.create(o : Object[, properties]) 5 [15.2.3.5]
1.5 0/5 (−)
10 5/5 (+)
5.5.6330 0/5 (−)
9.0.16440 5/5 (+)
7.02 0/5 (−)
8.0 1/5 (*)
9.52 0/5 (−)
11.61 5/5 (+)
12.15 4/5 (*)
4.6.5 0/5 (−)
531.22.7 0/5 (−)
7533.18.5 5/5 (+)
3.19.17 5/5 (+)
Object.defineProperties(o : Object, properties : Object) : Object 5 [15.2.3.7]
1.5 0/17 (−)
10 17/17 (+)
5.5.6330 0/17 (−)
9.0.16440 17/17 (+)
7.02 0/17 (−)
8.0 3/17 (*)
9.52 0/17 (−)
11.61 17/17 (+)
12.15 7/17 (*)
4.6.5 0/17 (−)
531.22.7 0/17 (−)
7533.18.5 17/17 (+)
3.19.17 17/17 (+)
Object.defineProperty(o : Object, property : String, attr : Object) : Object 5 [15.2.3.6]
1.5 0/17 (−)
10 17/17 (+)
5.5.6330 0/17 (−)
5.8.23141 9/17 (*)
9.0.16440 17/17 (+)
7.02 0/17 (−)
8.0 3/17 (*)
9.52 0/17 (−)
11.61 17/17 (+)
12.15 7/17 (*)
4.6.5 0/17 (−)
531.22.7 0/17 (−)
7533.18.5 17/17 (+)
3.19.17 17/17 (+)
Object.freeze(o : Object) : Object 5 [15.2.3.9]
1.5 0/7 (−)
10 7/7 (+)
5.5.6330 0/7 (−)
9.0.16440 7/7 (+)
7.02 0/7 (−)
8.0 2/7 (*)
9.52 0/7 (−)
11.61 7/7 (+)
12.15 5/7 (*)
4.6.5 0/7 (−)
531.22.7 0/7 (−)
7534.52.7 7/7 (+)
3.19.17 7/7 (+)
! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ECMAScript This impl.[14]
JavaScript JScript Opera KJS JSC V8
Object.getOwnPropertyDescriptor(obj : Object, property : String) : Object 5 [15.2.3.3]
1.5 0/9 (−)
10 9/9 (+)
5.5.6330 0/9 (−)
5.8.23141 2/9 (*)
9.0.16440 9/9 (+)
7.02 0/9 (−)
8.0 1/9 (*)
9.52 0/9 (−)
11.61 9/9 (+)
12.15 8/9 (*)
4.6.5 0/9 (−)
531.22.7 0/9 (−)
7533.18.5 9/9 (+)
3.19.17 9/9 (+)
Object.getOwnPropertyNames(o : Object) : Array 5 [15.2.3.4]
1.5 0/4 (−)
10 4/4 (+)
5.5.6330 0/4 (−)
9.0.16440 4/4 (+)
7.02 0/4 (−)
11.61 4/4 (+)
12.15 3/4 (*)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
7533.18.5 4/4 (+)
3.19.17 4/4 (+)
Object.getPrototypeOf(o : Object) : Object 5 [15.2.3.2]
1.5 0/3 (−)
1.8.1 2/3 (*)
10 3/3 (+)
5.5.6330 0/3 (−)
9.0.16440 3/3 (+)
7.02 0/3 (−)
11.61 3/3 (+)
12.15 2/3 (*)
4.6.5 0/3 (−)
531.22.7 0/3 (−)
7533.18.5 3/3 (+)
3.19.17 3/3 (+)
Object.isExtensible(o : Object) : boolean 5 [15.2.3.13]
1.5 0/4 (−)
10 4/4 (+)
5.5.6330 0/4 (−)
9.0.16440 4/4 (+)
7.02 0/4 (−)
8.0 1/4 (*)
9.52 0/4 (−)
11.61 4/4 (+)
12.15 3/4 (*)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
7534.52.7 4/4 (+)
3.19.17 4/4 (+)
Object.isFrozen(o : Object) : boolean 5 [15.2.3.12]
1.5 0/4 (−)
10 4/4 (+)
5.5.6330 0/4 (−)
9.0.16440 4/4 (+)
7.02 0/4 (−)
8.0 2/4 (*)
9.52 0/4 (−)
11.61 4/4 (+)
12.15 3/4 (*)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
7534.52.7 4/4 (+)
3.19.17 4/4 (+)
Object.isSealed(o : Object) : boolean 5 [15.2.3.11]
1.5 0/5 (−)
10 5/5 (+)
5.5.6330 0/5 (−)
9.0.16440 5/5 (+)
7.02 0/5 (−)
8.0 2/5 (*)
9.52 0/5 (−)
11.61 5/5 (+)
12.15 4/5 (*)
4.6.5 0/5 (−)
531.22.7 0/5 (−)
7534.52.7 5/5 (+)
3.19.17 5/5 (+)
Object.keys(o : Object) : Array 5 [15.2.3.14]
1.5 0/4 (−)
10 4/4 (+)
5.5.6330 0/4 (−)
9.0.16440 4/4 (+)
7.02 0/4 (−)
8.0 1/4 (*)
9.52 0/4 (−)
11.61 4/4 (+)
12.15 3/4 (*)
4.6.5 0/4 (−)
531.22.7 0/4 (−)
7533.18.5 4/4 (+)
3.19.17 4/4 (+)
Object.preventExtensions(o : Object) : Object 5 [15.2.3.10]
1.5 0/5 (−)
10 5/5 (+)
5.5.6330 0/5 (−)
9.0.16440 5/5 (+)
7.02 0/5 (−)
11.61 5/5 (+)
12.15 3/5 (*)
4.6.5 0/5 (−)
531.22.7 0/5 (−)
7534.52.7 5/5 (+)
3.19.17 5/5 (+)
Object.prototype : Object 1 [15.2.3.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
Object.prototype.__defineGetter__(propertyName : String, getter : Function)
1.5 2/2 (+)
5.5.6330 0/2 (−)
11.0.16412 2/2 (+)
7.02 0/2 (−)
8.0 1/2 (*)
9.52 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Object.prototype.__defineSetter__(propertyName : String, setter : Function)
1.5 2/2 (+)
5.5.6330 0/2 (−)
11.0.16412 2/2 (+)
7.02 0/2 (−)
8.0 1/2 (*)
9.52 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Object.prototype.__proto__
1.5 2/2 (+)
5.5.6330 0/2 (−)
11.0.16412 2/2 (+)
7.02 0/2 (−)
10.53 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Object.prototype.constructor : Function 1 [15.2.4.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
Object.prototype.hasOwnProperty(propertyName : String) : boolean 3 [15.2.4.5]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
Object.prototype.isPrototypeOf(o : Object) : boolean 3 [15.2.4.6]
1.5 5/6 (*)
10 6/6 (+)
5.5.6330 5/6 (*)
9.0.16440 6/6 (+)
7.02 5/6 (*)
11.61 6/6 (+)
4.6.5 5/6 (*)
531.22.7 5/6 (*)
7533.18.5 6/6 (+)
3.19.17 6/6 (+)
Object.prototype.propertyIsEnumerable(propertyName : String) : boolean 3 [15.2.4.7]
1.5 4/4 (+)
5.5.6330 4/4 (+)
5.6.6626 2/4 (*)
5.7.22589 4/4 (+)
7.02 4/4 (+)
4.6.5 4/4 (+)
531.22.7 4/4 (+)
3.19.17 4/4 (+)
Object.prototype.toSource() : string
1.5 2/2 (+)
5.5.6330 0/2 (−)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
Object.seal(obj : Object) : Object 5 [15.2.3.8]
1.5 0/6 (−)
10 6/6 (+)
5.5.6330 0/6 (−)
9.0.16440 6/6 (+)
7.02 0/6 (−)
8.0 1/6 (*)
9.52 0/6 (−)
11.61 6/6 (+)
12.15 4/6 (*)
4.6.5 0/6 (−)
531.22.7 0/6 (−)
7534.52.7 6/6 (+)
3.19.17 6/6 (+)
override 4
package 4
print(string)
1.5 1/1 (+)
5.5.6330 0/1 (−)
9.0.16440 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
private 4
protected 4
public 4
reArray.index 3 [15.10.6.2]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
reArray.input 3 [15.10.6.2]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
RegExp([, "[g][i]"]) : RegExp
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
RegExp([, "[g][i][m]"]) : RegExp 3 [15.10.4.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
RegExp.$integer
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
regExp.global 3 [15.10.7.2]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
regExp.ignoreCase 3 [15.10.7.3]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
regExp.multiline 3 [15.10.7.4]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
RegExp.prototype.compile()
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
RegExp.prototype.exec() 3 [15.10.6.2]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
regExp.source 3 [15.10.7.1]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
RegExp{["$&"] | .lastMatch}
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 0/2 (−)
10.53 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
RegExp{["$'"] | .rightContext}
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 0/2 (−)
8.0 1/2 (*)
10.53 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
RegExp{["$+"] | .lastParen}
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 0/2 (−)
10.53 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
RegExp{["$`"] | .leftContext}
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 0/2 (−)
8.0 1/2 (*)
10.53 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
sbyte 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
ScriptEngine()
1.5 0/2 (−)
5.5.6330 2/2 (+)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
ScriptEngineBuildVersion()
1.5 0/2 (−)
5.5.6330 2/2 (+)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
ScriptEngineMajorVersion()
1.5 0/2 (−)
5.5.6330 2/2 (+)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
ScriptEngineMinorVersion()
1.5 0/2 (−)
5.5.6330 2/2 (+)
9.0.16440 1/2 (*)
7.02 0/2 (−)
4.6.5 0/2 (−)
531.22.7 0/2 (−)
3.19.17 0/2 (−)
Set 6?
21 1/1 (+)
9.0.16440 0/1 (−)
11.0.16412 1/1 (+)
12.15 0/1 (−)
3.19.17 0/1 (−)
short 4
1.5 0/1 (−)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
String.fromCharCode(Number|uint) 1 [15.5.3.2]
1.5 5/5 (+)
5.5.6330 4/5 (*)
9.0.16440 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
String.prototype 1 [15.5.3.1]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
String.prototype.charCodeAt(Number|uint) 1 [15.5.4.5][G]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
String.prototype.concat() 3 [15.5.4.6][G]
1.5 5/6 (*)
1.8 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
! A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
ECMAScript This impl.[14]
JavaScript JScript Opera KJS JSC V8
String.prototype.localeCompare(string) 3 [15.5.4.9][G]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
String.prototype.match(RegExp) 3 [15.5.4.10][G]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
String.prototype.replace(string|RegExp, Function) 3 [15.5.4.11][G]
1.5 3/3 (+)
5.5.6330 3/3 (+)
7.02 3/3 (+)
4.6.5 3/3 (+)
531.22.7 3/3 (+)
3.19.17 3/3 (+)
String.prototype.replace(string|RegExp, string) 3 [15.5.4.11][G]
1.5 6/6 (+)
5.5.6330 6/6 (+)
7.02 6/6 (+)
4.6.5 6/6 (+)
531.22.7 6/6 (+)
3.19.17 6/6 (+)
String.prototype.search(RegExp) 3 [15.5.4.12][G]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
String.prototype.slice() 3 [15.5.4.13][G]
1.5 9/10 (*)
1.8 10/10 (+)
5.5.6330 9/10 (*)
9.0.16440 10/10 (+)
7.02 10/10 (+)
4.6.5 10/10 (+)
531.22.7 10/10 (+)
3.19.17 10/10 (+)
String.prototype.split(separator : String|RegExp[, limit : Number|int]) 3 [15.5.4.14][G]
1.5 7/7 (+)
5.5.6330 7/7 (+)
7.02 7/7 (+)
4.6.5 7/7 (+)
531.22.7 7/7 (+)
3.19.17 7/7 (+)
String.prototype.split(String) 1 [15.5.4.8][G]
1.5 5/5 (+)
5.5.6330 5/5 (+)
7.02 5/5 (+)
4.6.5 5/5 (+)
531.22.7 5/5 (+)
3.19.17 5/5 (+)
String.prototype.substr(start[, length]) 3 [B.2.3][G]
1.5 8/8 (+)
5.5.6330 6/8 (*)
9.0.16440 8/8 (+)
7.02 8/8 (+)
4.6.5 8/8 (+)
531.22.7 8/8 (+)
3.19.17 8/8 (+)
String.prototype.trim() : string 5 [15.5.4.20][G]
1.5 0/3 (−)
1.8.1 1/3 (*)
10 3/3 (+)
5.5.6330 0/3 (−)
9.0.16440 3/3 (+)
7.02 0/3 (−)
10.53 3/3 (+)
4.6.5 0/3 (−)
531.22.7 0/3 (−)
7533.18.5 1/3 (*)
7534.52.7 3/3 (+)
3.19.17 3/3 (+)
string[Number|uint] 5 [15.5.5.2]
1.5 1/1 (+)
5.5.6330 0/1 (−)
5.8.23141 1/1 (+)
7.02 0/1 (−)
9.27 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
switch (expression) { case valuestatements[break;] default: statements[break;] } 3 [12.11]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
throw expression 3 [12.13]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
8.0 0/1 (−)
9.52 1/1 (+)
12.15 0/1 (−)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
try { [statements}
catch (identifier) { 
[statements}
3 [12.14]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
8.0 1/2 (*)
9.52 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
try { [statements] }
catch (identifier) { 
[statements] }
finally { 
[statements] }
3 [12.14]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 0/2 (−)
9.52 2/2 (+)
10.53 0/2 (−)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
try { [statements] }
catch (identifier if expression) { 
[statements}
[catch (identifier) { [statements] }]
[finally { [statements] }]
1.5 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
try { [statements] }
finally { 
[statements] }
3 [12.15]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 0/1 (−)
9.52 1/1 (+)
10.53 0/1 (−)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
typeof expression 1 [11.4.3]
1.5 9/9 (+)
5.5.6330 9/9 (+)
7.02 9/9 (+)
4.6.5 9/9 (+)
531.22.7 9/9 (+)
3.19.17 9/9 (+)
undefined 3 [15.1.1.3]
1.5 2/2 (+)
5.5.6330 2/2 (+)
7.02 2/2 (+)
4.6.5 2/2 (+)
531.22.7 2/2 (+)
3.19.17 2/2 (+)
var \uhhhh 3 [7.6]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
var π 3 [7.6]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
VBArray.prototype.dimensions()
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
VBArray.prototype.getItem()
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
VBArray.prototype.lbound()
1.5 0/1 (−)
5.5.6330 1/1 (+)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
window
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
window.setInterval(functionReference, msec[, arg1[, , argN]])
window.setInterval(string, msec)
window.setTimeout(functionReference, msec[, arg1[, , argN]])
window.setTimeout(string, msec)
yield expression
1.5 0/1 (−)
1.7 1/1 (+)
5.5.6330 0/1 (−)
7.02 0/1 (−)
4.6.5 0/1 (−)
531.22.7 0/1 (−)
3.19.17 0/1 (−)
{propertyName: propertyValue, } : Object 3 [11.1.5]
1.5 1/1 (+)
5.5.6330 1/1 (+)
7.02 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
{propertyName: propertyValue, } : Object 5 [11.1.5]
1.5 1/1 (+)
5.5.6330 0/1 (−)
5.8.23141 1/1 (+)
7.02 0/1 (−)
9.52 1/1 (+)
4.6.5 1/1 (+)
531.22.7 1/1 (+)
3.19.17 1/1 (+)
1 Lahn, Thomas (2012-03-12). Features von ECMAScript-basierten Programmiersprachen – Eine vergleichende Analyse (“Features of ECMAScript-based programming languages – A comparative analysis”) (revised). BSc SUPSI in Computer Science. Fernfachhochschule Schweiz (Swiss Distance University of Applied Sciences).
2 Ecma International (2011‐06). Standard ECMA‒262. ECMAScript Language Specification. 5.1 Edition. (retrieved 2011‐08‐27)
3 Mozilla Developer Network and individual contributors (2014-10-18). A re-introduction to JavaScript (JS tutorial). (retrieved 2014‐10‐18)
4 Microsoft Corporation (2014). MSDN Library: JScript (ECMAScript3). (retrieved 2014‐10‐18)
5 Microsoft Corporation (2014). MSDN Library: JavaScript Language Reference. (retrieved 2014‐10‐18)
6 Opera Software ASA (2013). Opera browser: ECMAScript support in Opera Presto 2.12. (retrieved 2014‐10‐18)
7 The KDE developers (2013). KDE API Reference: KDE JavaScript/EcmaScript Engine. (retrieved 2014‐10‐18)
8 Apple Inc. (2014). The WebKit Open Source Project: JavaScriptCore. (retrieved 2014‐10‐18)
9 Google Inc. (2014). Google Developers: Chrome V8. (retrieved 2014‐10‐18)
10 Ecma International (1997‐06). ECMAScript Language Specification (1st edition) (retrieved 2012‐12‐10)
11 See W3C DOM Level 2 HTML for an example of language binding.
12 The distinction between core language and browser API was not made in Netscape JavaScript before version 1.4. JavaScript was designed to be the programming language for scripts in Netscape Navigator, therefore the Netscape API was part of JavaScript. This changed when JavaScript needed to work server-side in Netscape Enterprise Server as well.
13 Smith, Garrett and individual contributors (2010-10-08). comp.lang.javascript FAQ. Version 32.2. (updated by: Lahn, Thomas and individual contributors. FAQ for comp.lang.javascript)
14
  • This user agent:
  • This ECMAScript implementation
G This method is intentionally specified or implemented as generic; it does not require that its this value be an object of the same type. Therefore, it can be transferred to other kinds of objects for use as a method.[2]
V At least the version of the implementation that introduced the feature needs to be declared in order to use this feature (without syntax error).

Version Information

↑ Table of contents

Timeline

↑ Version information
Timeline of ECMAScript and its implementations
Timeline of ECMAScript and its implementations (click to enlarge)

Netscape/Mozilla JavaScript Version Information1)

↑ Version information
JavaScript versions and the user agents that support them
JavaScript 1.0 1.1 1.2 1.3 1.4 2.0 (historic) 1.5 1.6 1.7 1.8 1.8.1 1.8.2 1.8.5 5 6 7 8 10 12 13 15 16 17 18 19 20 21 22 23 24 25 26 27 28
1) Version information from the JavaScript Guides and References; release dates from about: documents, mozilla.org and Wikipedia.
Implementations
Netscape Mocha 1.0 1.1
Netscape/Mozilla SpiderMonkey (in C)   1.2 1.3 1.4   1.5 1.6 1.7 1.8 1.8.1 (TraceMonkey) 1.8.2 1.8.5 (JägerMonkey) 5 6 7 8 10 12 13 15 16 17 18 (IonMonkey) 19 20 (Baseline) 21 22 (OdinMonkey) 23 24 25 26 27 28
Mozilla Epimetheus (in C++) + (2002)
Netscape/Mozilla Rhino (in Java) 1.4R3 (1999)   1.5R11.5R5 (2000/2004) 1.6R11.6R7 (2004/2007) 1.7R11.7R2 (2008/2009) 1.7R31.7R4 (2011‐06‐03/ 2012‐06‐18)
Layout Engines
Netscape/Mozilla NGLayout/Gecko 0.6–1.8a6 1.8b1–1.8 1.8.1 1.9 1.9.1 1.9.2 1.9.3, 2.0 5.0 6.0 7.0 8.0–9.0 10.0–11.0 12.0 13.0–14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22 23 24 25 26 27 28
Web Browsers
Netscape Navigator/Browser  Navigator 2.0  (1996) 3.0  (1996) 4.0–4.05  (1997) 4.06–4.8  (1998/2002)   Navigator 6.x – Browser 8.1.3 
(2000/2007)
- Navigator 9.0b1 – 9.0.0.6 
(2007/2008)
Mozilla Phoenix/Firebird/Firefox Phoenix 0.1 – Firefox 1.0.8 
(2002/2006)
Firefox 1.5a1–1.5.0.12 
(2005/2007)
2.0b1–2.0.0.18 
(2006/2008)
3.0a2–3.0.19 
(2007/2010)
3.1a1–3.5.19 
(2008/2011)
3.6a1–3.6.19 
(2010/2011)
3.7a1–4.0.1 
(2010/2011)
5.0–5.0.1 
(2011)

(2011)

(2011)
8–9 
(2011/2012)
10–11 
(2012)
12 
(2012)
13–14 
(2012)
15 
(2012)
16 
(2012)
17
(2012)
18 
(2013)
19 
(2013)
20.0–20.0.1  (2013) 21  (2013) 22  (2013) 23.0–23.0.1  (2013‐08‐16) 24.0–24.4.0esr (2013‐09‐17/ 2014‐03‐18) 25  (2013) 26 
(2013)
27 
(2014‐02)
28
(2014‐03‐18)
Other Clients
Mozilla Application Suite  0.6–1.8a6–1.7.13 
(2000/2006)
1.8b1 
(2005)
Mozilla SeaMonkey 1.0a–1.0.9 
(2005/2007)
1.1a–1.1.19 
(2006/2010)
  2.0a1–2.0.12
(2008‐10‐05/ 2011‐03‐02)
  2.1a1–2.1
(2010‐05‐18/ 2011‐06‐10)
2.2b1–2.2
(2011‐06‐22/ 2011‐07‐07)
Mozilla Thunderbird 0.1–1.0.8 
(2003/2006)
1.1a1–1.5.0.14 
(2005/2007)
2.0a1–2.0.0.24 
(2006/2010)
3.0a1, 3.0a2 
(2008)
3.0a3–3.0.11 
(2008/2010)
3.1a1–3.1.12
(2010‐02‐03/ 2011‐08‐16)
3.3a1–3.3a3
(2010‐11‐23/ 2011‐01‐20)
5.0b1–5.0
(2011‐06‐02/ 2011‐06‐28)
Web Servers
Netscape Enterprise Server/
iPlanet Web Server/
Sun ONE Web Server/
Sun Java System Web Server
2.0 3.0 4.0/4.1 (1999)   6.0
NihonSoft firecat   1.0.x Beta4 (2008)

Microsoft JScript Version Information2)

↑ Version information
JScript versions and the user agents that support them
JScript 1.0 2.0 3.0 3.1.3510 4.0 5.0 5.1.5010 5.5.6330 5.6.6626–5.6.8819 5.7.5730 5.7.17184 5.8.18241   9.0.16421 (Chakra)   10.0.16578 11
JScript .NET   7.0 (.NET) 7.1 (.NET) 8.0   10.0
2) Version information from MSDN Library; release dates from MSDN Library, blooberry.com and Wikipedia, end-of-life (†) dates from support.microsoft.com.
Note that the language version supported by an environment may be greater than specified here due to security updates. When in doubt, use the script engine test above to determine the true version.
Implementations
Microsoft .NET Framework 1.0 (2002‐01) 1.1 (2003) 2.0–3.5 SP1 (2005/2008)   4.0 (2010‐04‐12)
Web Browsers
Microsoft Internet Explorer 3.0 
(1996‐08 CE)
4.0
(1997‐09)
4.01
(1997‐11)
5.0 
(1999‐03/ 2005‐06)
5.01 5.5 
(2000‐07/ 2005‐12)
6.0 for Win9x/NT/XP 
(2001‐10)
7.0 for WinXP+
(2006‐10)
8.0 beta 1 for WinXP SP2+
(2008‐03)
8.0 beta 2 for WinXP SP2+
(2008‐08)
  9.0 for Vista SP2+ / Server 2008
(2011‐03‐14)
  10 for Windows 8 (2012‐08) 11.0.16518 (2013‐10)
Web Servers
Microsoft Internet Information Server/Services 4.0 
(1998/2002)
5.1–6.0 
(2000/2005)
7.0
(2008)
7.5
(2009)
Operating Systems
Microsoft Windows NT 4.0 
(1996)
2000 
(2000‐02/ 2005‐06)
Me 
(2000‐09/ 2005‐12)
XP
(2001‐10)
Vista
(2008‐03)
7
(2009‐10)
  7   8 (2012‐10‐26) 8.1 (2013‐10‐17)
Microsoft Windows Server 2003
(2003‐04)
2008
(2008‐02)
2008 R2
(2009‐09)
  2008   2008 R2
IDEs
Microsoft Visual Studio 6.0 
(1998/2005)
.NET 7.0
(2002)
.NET 7.1
(2003)
8.0–9.0
(2005/2008)
10.0
(2010‐04‐12)

Google V8 Version Information

↑ Version information
V8 versions and the user agents that support them
V8 0.3 0.4 1.2 1.3 2.0 2.1 2.2 2.3 2.4 2.5 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 3.21 3.22 3.23
Google Chrome 0.2–1.0
(2008 CE)
2.0
(2009)
3.0
(2009)
4.0.249–4.1.249
(2010)
5.0.307
(2010)
5.0.342–5.0.375
(2010)
6
(2010)
7
(2010)
8
(2010)
9
(2011)
10
(2011)
11
(2011)
12
(2011)
13
(2011)
14
(2011)
15
(2011)
16
(2011)
17
(2012)
18 (2012) 19 (2012) 20 (2012) 21 (2012) 22 (2012) 23 (2012) 24 (2013) 25 (2013) 26 (2013) 27 (2013) 28 (2013) 29 (2013) 30 (2013) 31 (2013) 32 (2014‐01) 33 (2014‐02)

Apple JavaScriptCore Version Information

↑ Version information
Apple JavaScriptCore versions and the user agents that support them
JSC 48–312.6 412–419.13 522–523 525.13–525.20 525.19–525.21 525.27–525.28 530.17–530.19 531.9 531.21 531.22.7 533.16–533.19 533.16–534.48 534.51–534.53 534.54–534.59 536.25–537.73 537.71–537.73
Apple Safari 0.8–1.3.2 
(2003/2006 CE)
2.0.x 
(2005/2006)
3.0.x 
(2007)
3.1–3.1.1 
(2008)
3.1.2–3.2 
(2008)
3.2.1–3.2.3 
(2008/2009)
4.0–4.0.2 
(2009)
4.0.3 
(2009)
4.0.4 
(2009)
4.0.5 
(2010)
4.1.x 
(2010)
5.0–5.1 
(2010/2011)
5.1.1–5.1.3 
(2011/2012)
5.1.4–5.1.10 
(2012/2013)
6.0–6.1.1
(2012‐07‐25/ 2013‐12‐16)
7.0–7.0.1
(2013‐10‐22/ 2013‐12‐16)

Opera ECMAScript Version Information

↑ Version information
Opera ECMAScript versions and the user agents that support them
Opera ECMAScript 3.60 5.02 6.06 7.02 8.0 9.27 9.52 9.62 9.64 10.10 10.50 10.51 10.54 10.63 11.50 11.60–12.15
Implementations
Linear A Linear B Futhark Carakan 
Layout Engines
Elektra Presto 1.0 2.0 2.1 2.1.1 2.4 2.5 2.6 2.7 
Web Browsers
Opera Browser 3.60 
(1999‐05)
5.02 
(2000‐12)
6.06
(2001‐11)
7.02
(2003/2005)
8.0
(2005/2008)
9.27
(2008)
9.52
(2008)
9.62
(2008/2009)
9.64
(2009)
10.10
(2009/2010)
10.50
(2010‐03‐02)
10.51
(2010‐03‐22)
10.54
(2010‐06‐21)
10.63
(2010‐10‐12)
11.50
(2011‐06‐28)
11.60–12.15
(2011‐12‐06/ 2013‐04‐04)

Macromedia/Adobe ActionScript Versions3)

↑ Version information
ActionScript versions and the user agents that support them
ActionScript 1.0 2.0 3.0
3) Version information from Macromedia and Wikipedia
Macromedia Flash 5.0–MX (2000/2003) 7.1.1 (MX 2004) (2004/2006)
Macromedia Flash Player 2–6 (1997/2002‐03) 7–8 (2003‐09/2005‐08) 9 (2006-06)—
Adobe Flex   2.0 (2006-06)—

ECMAScript Compatibility

↑ Version information

The following table provides a rough overview of ECMAScript Editions and relations between them and versions of their implementations. Note that conforming implementations are allowed to extend ECMAScript, so these are by no means 1:n relations; instead, this is the result of a comparison of most common language features.

See Language Features above for details.

ECMAScript editions and versions of implementations that implement them best
ECMAScript Edition 1 2 3 4
(Working Draft; abandoned)
5–5.1 6
("Harmony", Working Draft)
1997‐06 1998‐08 1999‐12/2000‐03 2000‐08/2003‐06/2008 2009‐04/2009/12 since 2009‐04
ActionScript 2.0 (2004/2006) 3.0 (2006)—
JavaScript 1.1, 1.3, 1.4 1.5–1.8.1.x 2.0 1.8.1–14 (2008‐05/2012‐07‐17) 15 (2012‐08‐28)—
JavaScriptCore 48–? ? ?   528–537.70 (2009‐08/2013) 537.71 (2009‐08)—
JScript 1.0 (1996) 5.5–5.7 (2000/2008‐03)   5.8 (2008‐08)—
JScript .NET   7.0–10.0 (2000/2010)
KJS 1.0   4.6.5–
Opera 6.0 (2001-12)   11.60–12.15 (2011‐12‐06/2013‐04‐04)
V8 0.3   1.3.12–3.15.1 (2009‐09‐22/2012‐11‐06) 3.15.2 (2012-11-12)—
Editions of ECMAScript for XML and implementations that implement them best
ECMAScript for XML (E4X)
June 2004
ActionScript 2.0–3
JavaScript 1.6–20
JavaScriptCore -
JScript -
JScript .NET -
KJS -
Opera -
V8 -

Contributors

↑ Table of contents

Thanks to (in alphabetical order):