Please note that some of these tests represent existence, not functionality or full conformance.

V8 SpiderMonkey JavaScriptCore Chakra Carakan KJS Other
Compilers/polyfills Desktop browsers Servers/runtimes Mobile
Feature name Current browser Traceur 6to5 +
core-js
[1]
ES6
Trans-
piler
Closure JSX[2] Type-
Script
es6-
shim
IE 10 IE 11 IE
Technical
Preview
[3]
FF 11-12 FF 13 FF 16 FF 17 FF 18 FF 23 FF 24 FF 25 FF 27 FF 28 FF 29 FF 30 FF 31
ESR
FF 32 FF 33 FF 34 FF 35 FF 36 FF 37 CH <19 CH 19[4] CH 21-29[4] CH 30,
OP 17
[4]
CH 31,
OP 18
[4]
CH 32-33,
OP 19-20
[4]
CH 34,
OP 21
[4]
CH 35,
OP 22
[4]
CH 36,
OP 23
[4]
CH 37,
OP 24
[4]
CH 38,
OP 25
[4]
CH 39,
OP 26
[4]
CH 40,
OP 27
[4]
CH 41,
OP 28
[4]
CH 42,
OP 29
[4]
SF 5.1 SF 6 SF 6.1,
SF 7
SF 7.1,
SF 8
WK OP 12 KQ 4.14[5] RH PJS Node[6] io.js[6] Echo JS iOS7 iOS8
Optimisation
§proper tail calls (tail call optimisation) 0/2 1/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2
direct recursion Flag[7] Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
mutual recursion Flag[7] No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Syntax
§default function parameters 3/5 5/5 3/5 4/5 0/5 3/5 0/5 0/5 0/5 0/5 0/5 0/5 2/5 2/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 3/5 0/5 0/5
basic functionality Yes Yes Yes Yes No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
explicit undefined defers to the default Yes Yes Yes Yes No Yes No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
defaults can refer to previous params Yes Yes Yes Yes No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
temporal dead zone No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
separate scope No Yes No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§rest parameters 3/3 3/3 2/3 1/3 2/3 2/3 0/3 0/3 0/3 2/3 0/3 0/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 2/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 2/3 0/3 0/3
basic functionality Yes Yes Yes Yes Yes Yes No No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
function 'length' property Yes Yes Yes No Yes Yes No No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
arguments object interaction Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§spread (...) operator 10/10 10/10 6/10 2/10 0/10 0/10 0/10 0/10 0/10 4/10 0/10 0/10 1/10 2/10 2/10 2/10 2/10 2/10 8/10 8/10 8/10 8/10 8/10 8/10 8/10 8/10 8/10 10/10 10/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 2/10 2/10 0/10 0/10 0/10 0/10 0/10 0/10 8/10 0/10 2/10
with arrays, in function calls Yes Yes Yes Yes No No No No No Yes No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
with arrays, in array literals Yes Yes Yes Yes No No No No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
with strings, in function calls Yes Yes No No No No No No No Yes No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with strings, in array literals Yes Yes No No No No No No No Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with astral plane strings, in function calls Yes Yes No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with astral plane strings, in array literals Yes Yes No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with generic iterables, in calls Yes Yes Yes[8] No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with generic iterables, in arrays Yes Yes Yes[8] No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with instances of iterables, in calls Yes Yes Yes[8] No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
with instances of iterables, in arrays Yes Yes Yes[8] No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§object literal extensions 5/5 5/5 5/5 4/5 2/5 2/5 0/5 0/5 0/5 5/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 1/5 5/5 5/5 5/5 5/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 1/5 1/5 0/5 0/5 0/5 0/5 0/5 0/5 3/5 0/5 1/5
computed properties Yes Yes Yes Yes No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
shorthand properties Yes Yes Yes Yes Yes Yes No No No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No No No No Flag Flag Flag No No No No No No No No No No Flag Yes No No
shorthand methods Yes Yes Yes Yes Yes Yes No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No Flag Flag Flag Flag No No No No No No No No No No Flag Yes No No
computed shorthand methods Yes Yes Yes Yes No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
computed accessors Yes Yes Yes No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§for..of loops 5/5 5/5 3/5 4/5 0/5 0/5 0/5 0/5 0/5 5/5 0/5 1/5 1/5 3/5 3/5 3/5 3/5 3/5 4/5 4/5 4/5 4/5 4/5 4/5 4/5 4/5 4/5 5/5 5/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 5/5 5/5 5/5 5/5 5/5 0/5 0/5 0/5 1/5 1/5 0/5 0/5 0/5 0/5 5/5 5/5 4/5 0/5 1/5
with arrays Yes Yes Yes Yes No No No No No Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
with strings Yes Yes No Yes No No No No No Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
with astral plane strings Yes Yes No Yes No No No No No Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
with generic iterables Yes Yes Yes[8] Yes No No No No No Yes No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
with instances of generic iterables Yes Yes Yes[8] No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No No No
§octal and binary literals 2/4 2/4 2/4 2/4 0/4 2/4 0/4 0/4 0/4 2/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 2/4 2/4 2/4 2/4 2/4 2/4 2/4 2/4 2/4 2/4 4/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 4/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 4/4 4/4 0/4 0/4
octal literals Yes Yes Yes Yes No Yes No No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
binary literals Yes Yes Yes Yes No Yes No No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
octal supported by Number() No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
binary supported by Number() No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
§template strings 2/2 2/2 2/2 2/2 2/2 1/2 0/2 0/2 0/2 1/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 2/2 2/2 2/2 2/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 2/2 2/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 2/2 2/2 0/2 0/2
basic functionality Yes Yes Yes Yes Yes Yes No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No Yes Yes No No No No No No No No No No Yes Yes No No
tagged template strings Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No Yes Yes No No No No No No No No No No Yes Yes No No
§RegExp "y" and "u" flags 1/2 1/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 1/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2
"y" flag No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No Flag No No No No No No No No No No No No No No No No No
"u" flag Yes Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§destructuring 22/24 23/24 17/24 14/24 9/24 0/24 0/24 0/24 0/24 0/24 11/24 12/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 14/24 17/24 18/24 19/24 19/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 0/24 13/24 14/24 0/24 0/24 0/24 0/24 0/24 0/24 9/24 0/24 13/24
with arrays Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
with strings Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
with astral plane strings Yes Yes No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
with generic iterables Yes Yes No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
with instances of generic iterables Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
iterable destructuring expression Yes Yes Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
chained iterable destructuring Yes Yes Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
with objects Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes[9] Yes[9] No No No No No No Yes No Yes[9]
object destructuring expression Yes Yes Yes No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
chained object destructuring Yes Yes Yes No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
throws on null and undefined Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
computed properties Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
multiples in a single var statement Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No Yes No No No No No No Yes No No
nested Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
in parameters Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
in parameters, function 'length' property Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Yes No Yes
in for-in loop heads Yes Yes No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
in for-of loop heads Yes Yes Yes Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
rest Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
nested rest Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
defaults Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
defaults in parameters Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
defaults, let temporal dead zone No Flag No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
defaults in parameters, separate scope No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§Unicode code point escapes Yes Yes Yes Yes No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Bindings
§const 6/8 6/8 6/8 6/8 1/8 0/8 0/8 0/8 8/8 8/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 3/8 8/8 8/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 1/8 5/8 5/8 1/8 1/8 1/8 1/8 1/8 1/8 2/8 0/8 1/8 1/8 5/8 6/8 1/8 1/8
basic support Yes Yes Yes Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
is block-scoped Yes Yes Yes Yes Yes No No No Yes Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
redefining a const is an error Yes Yes Yes Yes No No No No Yes Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
temporal dead zone No Flag No No No No No No Yes Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
basic support (strict mode) Yes Yes Yes Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No Yes No No Flag Yes Yes No No
is block-scoped (strict mode) Yes Yes Yes Yes No No No No Yes Yes No No No No No No No No No No No No No No No No No Yes Yes No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
redefining a const (strict mode) Yes Yes Yes Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
temporal dead zone (strict mode) No Flag No No No No No No Yes Yes No No No No No No No No No No No No No No No No No Yes Yes No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes No No No
§let 8/10 8/10 6/10 8/10 0/10 0/10 0/10 0/10 8/10 8/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 5/10 5/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 5/10 10/10 0/10 0/10
basic support Yes Yes Yes Yes No No No No Yes Yes Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
is block-scoped Yes Yes Yes Yes No No No No Yes Yes Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
for-loop statement scope Yes Yes Yes Yes No No No No Yes Yes Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
temporal dead zone No Flag No No No No No No Yes Yes No No No No No No No No No No No No No No No No Flag[10] Flag[10] Flag[10] No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
for-loop iteration scope Yes Yes No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
basic support (strict mode) Yes Yes Yes Yes No No No No Yes Yes Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
is block-scoped (strict mode) Yes Yes Yes Yes No No No No Yes Yes Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
for-loop statement scope (strict mode) Yes Yes Yes Yes No No No No Yes Yes Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] Flag[10] No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
temporal dead zone (strict mode) No Flag No No No No No No Yes Yes No No No No No No No No No No No No No No No No Flag[10] Flag[10] Flag[10] No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
for-loop iteration scope (strict mode) Yes Yes No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
§block-level function declaration[11] Yes Yes No Yes No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes No No No
Functions
§arrow functions 9/11 9/11 7/11 8/11 7/11 6/11 0/11 0/11 0/11 9/11 0/11 0/11 0/11 0/11 0/11 8/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 7/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 7/11 0/11 0/11
0 parameters Yes Yes Yes Yes Yes Yes No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Flag No No No No No No No No No No No No Flag No Yes No No
1 parameter, no brackets Yes Yes Yes Yes Yes Yes No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Flag No No No No No No No No No No No No Flag No Yes No No
multiple parameters Yes Yes Yes Yes Yes Yes No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Flag No No No No No No No No No No No No Flag No Yes No No
lexical "this" binding Yes Yes Yes Yes Yes Yes No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"this" unchanged by call or apply Yes Yes Yes Yes Yes Yes No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
can't be bound, can be curried Yes Yes Yes Yes Yes Yes No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
lexical "arguments" binding Yes Yes No Yes No No No No No Yes No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
no line break between params and => Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
no "prototype" property No No No No No No No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No Flag No No No No No No No No No No No No No No Yes No No
lexical "super" binding Yes Yes Yes Yes Yes Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
lexical "new.target" binding No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§class 8/15 12/15 9/15 5/15 8/15 0/15 0/15 0/15 0/15 12/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 10/15 0/15 0/15
class statement Yes Yes Yes Yes Yes Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
is block-scoped No Yes No No Yes No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] No No No
class expression Yes Yes Yes Yes Yes No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
constructor Yes Yes Yes Yes Yes Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
prototype methods Yes Yes Yes Yes Yes Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
static methods Yes Yes Yes Yes Yes Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
accessor properties Yes Yes Yes No No Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
static accessor properties Yes Yes Yes No No Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
methods aren't enumerable No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
implicit strict mode Yes Yes Yes No Yes No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] No No No
constructor requires new No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
extends No[14] No[14] No[14] No[15] No[15] No[16] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
extends expressions No[14] No[14] No[14] No No[15] No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
extends null No[14] Yes Yes No Yes No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
new.target No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§super 4/4 4/4 4/4 3/4 0/4 0/4 0/4 0/4 0/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 4/4 0/4 0/4
statement in constructors Yes Yes Yes Yes No Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
expression in constructors Yes Yes Yes Yes No Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
in methods Yes Yes Yes Yes No Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
is statically bound Yes Yes Yes No No Flag[12] No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag[13] Yes No No
§generators 14/14 13/14 0/14 10/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 10/14 10/14 10/14 10/14 10/14 10/14 10/14 12/14 12/14 13/14 13/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 11/14 11/14 11/14 11/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 0/14 9/14 0/14 0/14 0/14
basic functionality Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
correct "this" binding Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
sending Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
%GeneratorPrototype% Yes No No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
%GeneratorPrototype%.throw Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
%GeneratorPrototype%.return Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
yield operator precedence Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
yield *, arrays Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
yield *, strings Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
yield *, astral plane strings Yes Yes No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
yield *, generic iterables Yes Yes No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag No No No No
yield *, instances of iterables Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes No No No No No No No No No Flag No No No No
shorthand generator methods Yes Yes No Yes No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No Flag Flag Flag Flag No No No No No No No No No No Flag No No No
computed shorthand generators Yes Yes No Yes No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Built-ins
§typed arrays 0/40 0/40 0/40 0/40 0/40 0/40 0/40 16/40 16/40 40/40 9/40 9/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 19/40 19/40 19/40 33/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 18/40 21/40 21/40 21/40 21/40 21/40 16/40 18/40 18/40 18/40 18/40 18/40 8/40 0/40 18/40 21/40 21/40 18/40 18/40 18/40
Int8Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Uint8Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Uint8ClampedArray No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
Int16Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Uint16Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Int32Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Uint32Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Float32Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
Float64Array No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes
DataView (Int8) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Uint8) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Int16) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Uint16) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Int32) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Uint32) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Float32) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
DataView (Float64) No No No No No No No Yes Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
%TypedArray%.from No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.of No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.subarray No No No No No No No No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No No Yes Yes Yes Yes Yes Yes
%TypedArray%.prototype.join No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.indexOf No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.lastIndexOf No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.slice No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.every No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.filter No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.forEach No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.map No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.reduce No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.reduceRight No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.reverse No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.some No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.sort No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.copyWithin No No No No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.find No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.findIndex No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.fill No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
%TypedArray%.prototype.keys No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No No No
%TypedArray%.prototype.values No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No No No
%TypedArray%.prototype.entries No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No No No
§Map 10/11 11/11 0/11 0/11 0/11 0/11 11/11 0/11 5/11 11/11 0/11 0/11 3/11 3/11 3/11 8/11 8/11 9/11 9/11 9/11 10/11 10/11 10/11 10/11 11/11 11/11 11/11 11/11 11/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 10/11 11/11 11/11 11/11 11/11 0/11 0/11 0/11 9/11 9/11 0/11 0/11 0/11 0/11 10/11 11/11 10/11 0/11 9/11
basic functionality Yes Yes No No No No Yes No Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
constructor arguments Yes Yes No No No No Yes No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
Map.prototype.set returns this Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
-0 key converts to +0 No Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
Map.prototype.size Yes Yes No No No No Yes No Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Map.prototype.delete Yes Yes No No No No Yes No Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Map.prototype.clear Yes Yes No No No No Yes No Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Map.prototype.forEach Yes Yes No No No No Yes No Yes Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Map.prototype.keys Yes Yes No No No No Yes No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Map.prototype.values Yes Yes No No No No Yes No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Map.prototype.entries Yes Yes No No No No Yes No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
§Set 10/11 11/11 0/11 0/11 0/11 0/11 11/11 0/11 5/11 11/11 0/11 0/11 3/11 3/11 3/11 5/11 8/11 9/11 9/11 9/11 10/11 10/11 10/11 10/11 11/11 11/11 11/11 11/11 11/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 0/11 10/11 11/11 11/11 11/11 11/11 0/11 0/11 0/11 9/11 9/11 0/11 0/11 0/11 0/11 10/11 11/11 10/11 0/11 9/11
basic functionality Yes Yes No No No No Yes No Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
constructor arguments Yes Yes No No No No Yes No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
Set.prototype.add returns this Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
-0 key converts to +0 No Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No Flag Yes No No No
Set.prototype.size Yes Yes No No No No Yes No Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Set.prototype.delete Yes Yes No No No No Yes No Yes Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Set.prototype.clear Yes Yes No No No No Yes No Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Set.prototype.forEach Yes Yes No No No No Yes No Yes Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Set.prototype.keys Yes Yes No No No No Yes No No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Set.prototype.values Yes Yes No No No No Yes No No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Set.prototype.entries Yes Yes No No No No Yes No No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
§WeakMap 0/5 5/5 0/5 0/5 0/5 0/5 0/5 0/5 2/5 5/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 3/5 4/5 4/5 4/5 5/5 5/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 3/5 3/5 5/5 5/5 5/5 5/5 5/5 0/5 0/5 0/5 4/5 4/5 0/5 0/5 0/5 0/5 5/5 5/5 5/5 0/5 4/5
basic functionality No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
constructor arguments No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
WeakMap.prototype.set returns this No Yes No No No No No No No Yes No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
WeakMap.prototype.delete No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Support frozen objects as keys No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
§WeakSet 0/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 4/4 4/4 4/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 2/4 2/4 4/4 4/4 4/4 4/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 4/4 4/4 4/4 0/4 0/4
basic functionality No Yes No No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
constructor arguments No Yes No No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
WeakSet.prototype.add returns this No Yes No No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
WeakSet.prototype.delete No Yes No No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
§Proxy 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 17/20 0/20 0/20 0/20 0/20 10/20 10/20 10/20 10/20 10/20 10/20 10/20 11/20 12/20 12/20 13/20 14/20 14/20 14/20 16/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 0/20 11/20 0/20 0/20
"get" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"get" handler, instances of proxies No No No No No No No No No Yes No No No No No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No[17] No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"set" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"set" handler, instances of proxies No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"has" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"has" handler, instances of proxies No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"deleteProperty" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"getOwnPropertyDescriptor" handler No No No No No No No No No Yes No No No No No[18] No[18] No[18] No[18] No[18] No[18] No[18] Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"defineProperty" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"getPrototypeOf" handler No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"setPrototypeOf" handler No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
"isExtensible" handler No No No No No No No No No Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
"preventExtensions" handler No No No No No No No No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
"enumerate" handler No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
"ownKeys" handler No No No No No No No No No No No No No No No[19] No[19] No[19] No[19] No[19] No[19] No[19] No[19] No[19] No[19] Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
"apply" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
"construct" handler No No No No No No No No No Yes No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Proxy.revocable No No No No No No No No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Array.isArray support No No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
JSON.stringify support No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§Reflect 0/15 13/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 12/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 0/15 14/15 0/15 0/15
Reflect.get No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.set No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.has No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.deleteProperty No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.getOwnPropertyDescriptor No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.defineProperty No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.getPrototypeOf No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.setPrototypeOf No No[14] No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.isExtensible No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.preventExtensions No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.enumerate No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.ownKeys No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.apply No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.construct No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Reflect.construct, new.target No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§Promise 3/3 3/3 0/3 0/3 0/3 0/3 3/3 0/3 0/3 3/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 0/3 0/3 0/3 0/3 0/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 0/3 0/3 0/3 3/3 3/3 0/3 0/3 0/3 0/3 3/3 3/3 3/3 0/3 3/3
basic functionality Yes Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Promise.all Yes Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Promise.race Yes Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
§Symbol 3/9 5/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 8/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 9/9 9/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 0/9 7/9 8/9 8/9 8/9 8/9 0/9 0/9 0/9 0/9 8/9 0/9 0/9 0/9 0/9 7/9 8/9 8/9 0/9 0/9
basic functionality Yes Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
typeof support No Flag No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
symbol keys are hidden to pre-ES6 code No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
Object.defineProperty support Yes Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
cannot coerce to string or number No No No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
can convert with String() No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No Yes Yes Yes Yes No No No No Yes No No No No No Yes Yes No No
new Symbol() throws Yes Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
Object(symbol) No No No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No Flag Flag Flag Flag No No No No No No No No No No No No Yes No No No No No No No No No
global symbol registry No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
§well-known symbols 1/7 2/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 2/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 1/7 1/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 2/7 2/7 2/7 2/7 2/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 0/7 2/7 2/7 6/7 0/7 0/7
Symbol.hasInstance No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Symbol.isConcatSpreadable No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Symbol.iterator Yes Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No Flag Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
Symbol.species No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Symbol.toPrimitive No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Symbol.toStringTag No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag Flag Flag No No No No No No No No No No Flag Yes No No
Symbol.unscopables No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No[20] No No
Built-in extensions
§Object static methods 3/4 2/4 0/4 0/4 0/4 0/4 2/4 0/4 1/4 3/4 0/4 0/4 0/4 0/4 0/4 1/4 1/4 1/4 1/4 1/4 1/4 1/4 2/4 2/4 2/4 3/4 3/4 4/4 4/4 0/4 1/4 1/4 1/4 1/4 1/4 2/4 2/4 2/4 2/4 3/4 3/4 3/4 3/4 3/4 0/4 0/4 0/4 0/4 0/4 0/4 1/4 0/4 0/4 3/4 3/4 4/4 0/4 0/4
Object.assign Yes Yes No No No No Yes No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Object.is Yes Yes No No No No Yes No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes No No Yes Yes Yes No No
Object.getOwnPropertySymbols Yes No No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
Object.setPrototypeOf No No[14] No No No No No[14] No Yes Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
§function "name" property 0/16 9/16 0/16 0/16 0/16 0/16 0/16 0/16 0/16 0/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 3/16 4/16 4/16 4/16 4/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 2/16 3/16 3/16 3/16 3/16 3/16 2/16 3/16 3/16 3/16 2/16 3/16 3/16 3/16 3/16
function statements No Yes No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
function expressions No Yes No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
new Function No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No Yes Yes Yes No No No Yes Yes
bound functions No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
variables (function) No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
object methods (function) No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
accessor properties No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
shorthand methods No Yes No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No Flag Flag Flag Flag No No No No No No No No No No Yes No No No
symbol-keyed methods No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
class statements No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
class expressions No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
variables (class) No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
object methods (class) No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
class prototype methods No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
class static methods No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
isn't writable, is configurable No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§String static methods 2/2 2/2 0/2 0/2 0/2 0/2 2/2 0/2 0/2 2/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 1/2 1/2 1/2 1/2 1/2 2/2 2/2 2/2 2/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 2/2 2/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 0/2 2/2 2/2 0/2 0/2
String.raw Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No Yes Yes No No No No No No No No No No Yes Yes No No
String.fromCodePoint Yes Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
§String.prototype methods 5/6 5/6 0/6 0/6 0/6 0/6 5/6 0/6 0/6 5/6 0/6 0/6 0/6 2/6 2/6 2/6 3/6 3/6 3/6 3/6 4/6 4/6 5/6 5/6 5/6 5/6 5/6 5/6 5/6 0/6 0/6 0/6 0/6 0/6 0/6 1/6 1/6 1/6 1/6 1/6 1/6 1/6 6/6 6/6 0/6 0/6 0/6 0/6 4/6 0/6 0/6 0/6 0/6 1/6 6/6 5/6 0/6 0/6
String.prototype.codePointAt Yes Yes No No No No Yes No No Yes No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No Flag Flag Flag Yes Yes No No No No No No No No No Flag Yes Yes No No
String.prototype.normalize No No No No No No No No No Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No No No
String.prototype.repeat Yes Yes No No No No Yes No No Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No Yes No No No No Flag Yes Yes No No
String.prototype.startsWith Yes Yes No No No No Yes No No Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No Yes No No No No Flag Yes Yes No No
String.prototype.endsWith Yes Yes No No No No Yes No No Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Yes Yes No No No No Yes No No No No Flag Yes Yes No No
String.prototype.includes Yes Yes No No No No Yes No No No No No No No No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No No No No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] No[21] Yes Yes No No No No Yes No No No No Flag[21] Yes Yes No No
§RegExp.prototype properties 0/5 1/5 0/5 0/5 0/5 0/5 1/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 1/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 5/5 0/5 0/5
RegExp.prototype.flags No Yes No No No No Yes No No No No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
RegExp.prototype[Symbol.match] No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
RegExp.prototype[Symbol.replace] No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
RegExp.prototype[Symbol.split] No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
RegExp.prototype[Symbol.search] No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
§Array static methods 4/4 4/4 0/4 0/4 0/4 0/4 3/4 0/4 0/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 1/4 1/4 1/4 1/4 1/4 1/4 3/4 3/4 3/4 3/4 4/4 4/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 1/4 0/4 0/4 0/4 0/4 0/4 0/4 3/4 0/4 0/4
Array.from, array-like objects Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Array.from, generic iterables Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Array.from, instances of generic iterables Yes Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Array.of Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No Flag No No No No No No No Yes No No No No No No Yes No No
§Array.prototype methods 6/8 8/8 0/8 0/8 0/8 0/8 7/8 0/8 0/8 8/8 0/8 0/8 0/8 0/8 0/8 0/8 0/8 2/8 2/8 4/8 4/8 4/8 5/8 6/8 6/8 6/8 6/8 6/8 6/8 0/8 0/8 0/8 0/8 0/8 0/8 0/8 0/8 0/8 0/8 3/8 3/8 3/8 3/8 3/8 0/8 0/8 0/8 5/8 5/8 0/8 0/8 0/8 0/8 4/8 3/8 7/8 0/8 5/8
Array.prototype.copyWithin No Yes No No No No Yes No No Yes No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No Yes No No
Array.prototype.find Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag No No No Yes Yes No No No No Flag No Yes No Yes
Array.prototype.findIndex Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag Flag No No No Yes Yes No No No No Flag No Yes No Yes
Array.prototype.fill Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No No No Flag Flag Flag Flag Flag Flag Flag No No No Yes Yes No No No No Flag No Yes No Yes
Array.prototype.keys Yes Yes No No No No Yes No No Yes No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Array.prototype.values Yes Yes No No No No Yes No No Yes No No No No[22] No[22] No[22] No[22] No[22] No[23] No[23] No[23] No[23] No[23] No[23] No[23] No[23] No[23] No[24] No[24] No No No Flag Flag Flag Flag Flag Flag Flag No[24] No[24] No[24] No[24] No[24] No No No No No No No No No Yes No Yes No No
Array.prototype.entries Yes Yes No No No No Yes No No Yes No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Flag Flag Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Array.prototype[Symbol.unscopables] No Yes No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes No No No
§Number properties 7/7 7/7 0/7 0/7 0/7 0/7 7/7 0/7 0/7 7/7 0/7 0/7 3/7 3/7 3/7 3/7 3/7 4/7 4/7 4/7 4/7 4/7 6/7 7/7 7/7 7/7 7/7 7/7 7/7 0/7 2/7 2/7 2/7 2/7 2/7 7/7 7/7 7/7 7/7 7/7 7/7 7/7 7/7 7/7 0/7 0/7 0/7 0/7 7/7 0/7 6/7 0/7 0/7 7/7 7/7 7/7 0/7 0/7
Number.isFinite Yes Yes No No No No Yes No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
Number.isInteger Yes Yes No No No No Yes No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
Number.isSafeInteger Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
Number.isNaN Yes Yes No No No No Yes No No Yes No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
Number.EPSILON Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No No No No Yes Yes Yes No No
Number.MIN_SAFE_INTEGER Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
Number.MAX_SAFE_INTEGER Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
§Math methods 17/17 17/17 0/17 0/17 0/17 0/17 17/17 0/17 0/17 16/17 0/17 0/17 0/17 0/17 0/17 1/17 1/17 14/17 16/17 16/17 16/17 16/17 17/17 17/17 17/17 17/17 17/17 17/17 17/17 0/17 0/17 1/17 1/17 1/17 1/17 1/17 1/17 1/17 1/17 17/17 17/17 17/17 17/17 17/17 0/17 0/17 1/17 15/17 16/17 0/17 14/17 0/17 1/17 17/17 17/17 17/17 1/17 15/17
Math.clz32 Yes Yes No No No No Yes No No Yes No No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No No No No No No No Yes Yes Yes No No
Math.imul Yes Yes No No No No Yes No No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes[25] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No Yes Yes Yes No Yes No Yes Yes Yes Yes Yes Yes
Math.sign Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No No Yes No Yes No No Yes Yes Yes No No
Math.log10 Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.log2 Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.log1p Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.expm1 Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Math.cosh Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.sinh Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.tanh Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.acosh Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.asinh Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No No No No Yes Yes Yes No Yes
Math.atanh Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.trunc Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No Flag Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.fround Yes Yes No No No No Yes No No Yes No No No No No No No No Yes[26] Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.cbrt Yes Yes No No No No Yes No No Yes No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Math.hypot Yes Yes No No No No Yes No No No No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No Flag Flag Flag Flag Yes Yes Yes Yes Yes No No No Yes Yes No Yes No No Yes Yes Yes No Yes
Subclassing
§Array is subclassable 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 2/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4 0/4
basic functionality No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No Flag No No No
Array.prototype.slice No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Array.from No[14] No[14] No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Array.of No[14] No[14] No No No No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§RegExp is subclassable 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3
basic functionality No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
RegExp.prototype.exec No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
RegExp.prototype.test No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§Function is subclassable 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5
can be called No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
can be used with "new" No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Function.prototype.call No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Function.prototype.apply No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Function.prototype.bind No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§Promise is subclassable 3/3 3/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3
basic functionality Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Promise.all Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Promise.race Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§miscellaneous subclassables 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3
Boolean is subclassable No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Number is subclassable No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
String is subclassable No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Misc
§Object static methods accept primitives 0/10 10/10 0/10 0/10 0/10 0/10 1/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 1/10 1/10 10/10 10/10 10/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 2/10 2/10 2/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 0/10 2/10 0/10 0/10 0/10
Object.getPrototypeOf No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.getOwnPropertyDescriptor No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.getOwnPropertyNames No Yes No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes Yes No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No Yes No No No
Object.seal No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.freeze No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.preventExtensions No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.isSealed No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.isFrozen No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.isExtensible No Yes No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Object.keys No Yes No No No No Yes No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No Yes No No No
§miscellaneous 0/7 4/7 0/7 0/7 0/7 0/7 1/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 3/7 3/7 3/7 3/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 2/7 3/7 2/7 2/7 2/7 2/7 2/7 2/7 1/7 2/7 2/7 2/7 2/7 1/7 2/7 2/7
duplicate property names in strict mode No Yes No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No
no semicolon needed after do-while No Yes No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes No Yes Yes
no assignments allowed in for-in head No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
accessors aren't constructors No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Invalid Date No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
RegExp constructor can alter flags No Yes No No No No Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
built-in prototypes are not instances No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
Annex b
§hoisted block-level function declaration No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No Yes No No No No No No
§__proto__ in object literals[27] 0/5 0/5 0/5 0/5 0/5 0/5 0/5 0/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 2/5 5/5 5/5 5/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 1/5 2/5 1/5 1/5 1/5 2/5 2/5 1/5 1/5 1/5 1/5 1/5 1/5 0/5 1/5 2/5
basic support No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes
multiple __proto__ is an error No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No Yes No No No No No No No No No No No No No No
not a computed property No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes Yes No No No No No No No No Yes
not a shorthand property No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
not a shorthand method No No No No No No No No No No No No No No No No No No No No No No No No No No Yes Yes Yes No No No No No No No No No No No No No No No No No No No No No No No No No No No No No
§Object.prototype.__proto__ 0/3 0/3 0/3 0/3 0/3 0/3 0/3 0/3 3/3 3/3 2/3 2/3 2/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 2/3 2/3 2/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 3/3 2/3 3/3 3/3 3/3 3/3 3/3 2/3 3/3 3/3 3/3 3/3 0/3 3/3 3/3
get prototype No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes
set prototype No No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes
correct property descriptor No No No No No No No No Yes Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes Yes Yes Yes No Yes Yes Yes Yes No Yes Yes
§String.prototype HTML methods No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes
§RegExp.prototype.compile No No No No No No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes No Yes Yes
__createIterableObject(), used in the numerous "generic iterables" tests, is defined as:

[1] Flagged features require an optional transformer setting.

[2] Have to be enabled via harmony option

[3] Have to be enabled via "Experimental Web Platform Features" flag

[4] Flagged features have to be enabled via "Experimental Javascript features" flag

[5] Results are only applicable for the KHTML rendering engine.

[6] Flagged features have to be enabled via --harmony or --es_staging flag

[7] Requires the properTailCalls compile option.

[8] This compiler requires generic iterables have a Symbol.iterator or non-standard "@@iterator" method.

[9] WebKit doesn't support parenthesised object destructuring patterns (e.g. ({f,g}) = {f:9,g:10}).

[10] Available for code in a <script type="application/javascript;version=1.7"> (or version=1.8) tag.

[11] Note that prior to ES6, it was recommended that ES5 implementations forbid block-level declarations in strict mode.

[12] TypeScript only supports class statements at script or module top-level.

[13] Support for this feature incorrectly requires strict mode.

[14] Requires native support for Object.prototype.__proto__

[15] This compiler transforms extends into code that copies properties from the superclass, instead of using the prototype chain.

[16] TypeScript transforms extends into code that copies static properties from the superclass (but uses the prototype chain for instance properties).

[17] Firefox doesn't allow a proxy's "get" handler to be triggered via the prototype chain, unless the proxied object does possess the named property (or the proxy's "has" handler reports it as present).

[18] From Firefox 18 up to 29, the getOwnPropertyDescriptor handler can only report non-existent properties if the proxy target is non-extensible rather than extensible

[19] Available from Firefox 18 up to 33 as the draft standard keys handler

[20] with is not supported in ejs

[21] Available as the draft standard String.prototype.contains

[22] Available from Firefox 17 up to 27 as the non-standard Array.prototype.iterator

[23] Available from Firefox 27 up to 35 as the non-standard Array.prototype["@@iterator"]

[24] Available as Array.prototype[Symbol.iterator]

[25] Available since Chrome 28

[26] Available since Firefox 26

[27] Note that this is distinct from the existence or functionality of Object.prototype.__proto__.