| NativeScript | Desktop browsers | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Feature name | Current browser | NS 6.5 Android v8 |
NS 7.0 Android v8 |
NS 8.0 Android v8 |
NS 6.5 iOS JSC |
NS 7.0 iOS v8 |
NS 8.0 iOS v8 |
CH 89 | CH 90 | SF 14 Beta | SF TP | |
| Optimisation | ||||||||||||
| §proper tail calls (tail call optimisation) | 0/2 | 0/2 | 0/2 | 2/2 | 0/2 | 0/2 | 0/2 | 0/2 | 2/2 | 2/2 | ||
| §direct recursion | No | No | No | Yes | No | No | No | No | Yes | Yes | ||
| §mutual recursion | No | No | No | Yes | No | No | No | No | Yes | Yes | ||
| Syntax | ||||||||||||
| §default function parameters |
7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §explicit undefined defers to the default | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults can refer to previous params | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §arguments object interaction | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §temporal dead zone | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §separate scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §new Function() support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §rest parameters |
5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §function 'length' property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §arguments object interaction | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §can't be used in setters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §new Function() support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §spread syntax for iterable objects |
15/15 | 15/15 | 15/15 | 15/15 | 15/15 | 15/15 | 15/15 | 15/15 | 15/15 | 15/15 | ||
| §with arrays, in function calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with arrays, in array literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with sparse arrays, in function calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with sparse arrays, in array literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with strings, in function calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with strings, in array literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with astral plane strings, in function calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with astral plane strings, in array literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generator instances, in calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generator instances, in arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generic iterables, in calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generic iterables, in arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with instances of iterables, in calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with instances of iterables, in arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §spreading non-iterables is a runtime error | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object literal extensions |
6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §computed properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §string-keyed shorthand methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed shorthand methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed accessors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for..of loops |
9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | ||
| §with arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with sparse arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with astral plane strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with instances of generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing, break | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing, throw | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §octal and binary literals | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | ||
| §octal literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §binary literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §octal supported by Number() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §binary supported by Number() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §template literals |
7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §toString conversion | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §tagged template literals | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §passed array is frozen | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §line break normalisation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §TemplateStrings call site caching | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §TemplateStrings permanent caching | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp "y" and "u" flags |
5/6 | 5/6 | 5/6 | 5/6 | 5/6 | 5/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §"y" flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"y" flag, lastIndex | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"u" flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"u" flag, non-BMP Unicode characters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"u" flag, Unicode code point escapes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"u" flag, case folding | No | No | No | No | No | No | Yes | Yes | Yes | Yes | ||
| §destructuring, declarations |
22/22 | 22/22 | 22/22 | 22/22 | 22/22 | 22/22 | 22/22 | 22/22 | 22/22 | 22/22 | ||
| §with arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with sparse arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with astral plane strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with instances of generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §trailing commas in iterable patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with objects | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object destructuring with primitives | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §trailing commas in object patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §throws on null and undefined | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §multiples in a single var statement | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §nested | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in for-in loop heads | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in for-of loop heads | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in catch heads | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §rest | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults, let temporal dead zone | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §destructuring, assignment |
24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | ||
| §with arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with sparse arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with astral plane strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with instances of generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterable destructuring expression | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §chained iterable destructuring | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §trailing commas in iterable patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with objects | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object destructuring with primitives | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §trailing commas in object patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object destructuring expression | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §parenthesised left-hand-side is a syntax error | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §chained object destructuring | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §throws on null and undefined | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §nested | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §rest | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §nested rest | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §empty patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §destructuring, parameters |
25/25 | 25/25 | 25/25 | 25/25 | 25/25 | 25/25 | 25/25 | 25/25 | 25/25 | 25/25 | ||
| §with arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with sparse arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with astral plane strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with instances of generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §trailing commas in iterable patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §with objects | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object destructuring with primitives | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §trailing commas in object patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §throws on null and undefined | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §nested | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §'arguments' interaction | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §new Function() support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in parameters, function 'length' property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §rest | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §empty patterns | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults, separate scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §defaults, new Function() support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §aliased defaults, arrow function | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand defaults, arrow function | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Unicode code point escapes | 1/4 | 1/4 | 1/4 | 4/4 | 1/4 | 1/4 | 4/4 | 4/4 | 4/4 | 4/4 | ||
| §in strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in identifiers | No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §in property key definitions | No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §in property key accesses | No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §new.target |
2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | ||
| §in constructors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §assignment is an early error | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Bindings | ||||||||||||
| §const |
18/18 | 18/18 | 18/18 | 18/18 | 18/18 | 18/18 | 18/18 | 18/18 | 18/18 | 18/18 | ||
| §basic support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §is block-scoped | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §scope shadow resolution | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §cannot be in statements | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §redefining a const is an error | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for loop statement scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for-in loop iteration scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for-of loop iteration scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §temporal dead zone | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §basic support (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §is block-scoped (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §scope shadow resolution (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §cannot be in statements (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §redefining a const (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for loop statement scope (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for-in loop iteration scope (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for-of loop iteration scope (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §temporal dead zone (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §let |
16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | 16/16 | ||
| §basic support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §is block-scoped | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §scope shadow resolution | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §cannot be in statements | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for loop statement scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §temporal dead zone | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for/for-in loop iteration scope | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for-in loop binding shadowing parameter | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §basic support (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §is block-scoped (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §scope shadow resolution (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §cannot be in statements (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for loop statement scope (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §temporal dead zone (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for/for-in loop iteration scope (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §for-in loop binding shadowing parameter (strict mode) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §block-level function declaration[1] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Functions | ||||||||||||
| §arrow functions |
13/13 | 13/13 | 13/13 | 13/13 | 13/13 | 13/13 | 13/13 | 13/13 | 13/13 | 13/13 | ||
| §0 parameters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §1 parameter, no brackets | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §multiple parameters | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §lexical "this" binding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"this" unchanged by call or apply | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §can't be bound, can be curried | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §lexical "arguments" binding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
§no line break between params and => |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct precedence | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §no "prototype" property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §lexical "super" binding in constructors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §lexical "super" binding in methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §lexical "new.target" binding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class |
24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | ||
| §class statement | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §is block-scoped | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class expression | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §anonymous class | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §prototype methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §string-keyed methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed prototype methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §optional semicolons | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §static methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed static methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §accessor properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed accessor properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §static accessor properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed static accessor properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class name is lexically scoped | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed names, temporal dead zone | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §methods aren't enumerable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §implicit strict mode | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §extends | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §extends expressions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §extends null | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §new.target | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §super |
8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | ||
| §statement in constructors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §expression in constructors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in methods, property access | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §in methods, method calls | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §method calls use correct "this" binding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor calls use correct "new.target" binding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §is statically bound | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §super() invokes the correct constructor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §generators |
27/27 | 27/27 | 27/27 | 27/27 | 27/27 | 27/27 | 27/27 | 27/27 | 27/27 | 27/27 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §generator function expressions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct "this" binding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §can't use "this" with new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §sending | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%GeneratorPrototype% | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%GeneratorPrototype% prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%GeneratorPrototype%.constructor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%GeneratorPrototype%.throw | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%GeneratorPrototype%.return | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield operator precedence | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, sparse arrays | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, astral plane strings | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, instances of iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield * on non-iterables is a runtime error | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §yield *, iterator closing via throw() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand generator methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §string-keyed shorthand generator methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed shorthand generators | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand generator methods, classes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §computed shorthand generators, classes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand generators can't be constructors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Built-ins | ||||||||||||
| §typed arrays |
46/46 | 46/46 | 46/46 | 46/46 | 46/46 | 46/46 | 46/46 | 46/46 | 46/46 | 46/46 | ||
| §Int8Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Uint8Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Uint8ClampedArray |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Int16Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Uint16Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Int32Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Uint32Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Float32Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Float64Array |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Int8) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Uint8) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Int16) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Uint16) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Int32) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Uint32) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Float32) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §DataView (Float64) |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §ArrayBuffer[Symbol.species] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructors require new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructors accept generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct prototype chains | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.from |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.of |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.subarray |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.join |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.indexOf |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.lastIndexOf |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.slice |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.every |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.filter |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.forEach |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.map |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.reduce |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.reduceRight |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.reverse |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.some |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.sort |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.copyWithin |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.find |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.findIndex |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.fill |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.values |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype.entries |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%.prototype[Symbol.iterator] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §%TypedArray%[Symbol.species] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map |
19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor arguments | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor accepts null | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor invokes set | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.set returns this | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §-0 key converts to +0 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.size |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.delete |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.clear |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.forEach |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.values |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype.entries |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype[Symbol.iterator] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map.prototype isn't an instance | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map iterator prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map[Symbol.species] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set |
19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | 19/19 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor arguments | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor accepts null | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor invokes add | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.add returns this | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §-0 key converts to +0 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.size |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.delete |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.clear |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.forEach |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.values |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype.entries |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype[Symbol.iterator] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set.prototype isn't an instance | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set iterator prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set[Symbol.species] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakMap |
12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor arguments | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor accepts null | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor invokes set | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §frozen objects as keys | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakMap.prototype.set returns this |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakMap.prototype.delete |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §no WeakMap.prototype.clear method |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §.has, .get and .delete methods accept primitives | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakMap.prototype isn't an instance | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakSet |
11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor arguments | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor accepts null | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor invokes add | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakSet.prototype.add returns this | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakSet.prototype.delete | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §no WeakSet.prototype.clear method | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §.has and .delete methods accept primitives | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §WeakSet.prototype isn't an instance | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy |
34/34 | 34/34 | 34/34 | 34/34 | 34/34 | 34/34 | 34/34 | 34/34 | 34/34 | 34/34 | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §no "prototype" property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"get" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"get" handler, instances of proxies | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"get" handler invariants | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"set" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"set" handler, instances of proxies | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"set" handler invariants | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"has" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"has" handler, instances of proxies | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"has" handler invariants | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"deleteProperty" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"deleteProperty" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"getOwnPropertyDescriptor" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"getOwnPropertyDescriptor" handler invariants | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"defineProperty" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"defineProperty" handler invariants | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"getPrototypeOf" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"getPrototypeOf" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"setPrototypeOf" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"setPrototypeOf" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"isExtensible" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"isExtensible" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"preventExtensions" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"preventExtensions" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"ownKeys" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"ownKeys" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"apply" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"apply" handler invariant | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"construct" handler |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §"construct" handler invariants | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy.revocable |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.isArray support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §JSON.stringify support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect |
20/20 | 20/20 | 20/20 | 20/20 | 19/20 | 19/20 | 20/20 | 20/20 | 20/20 | 20/20 | ||
| §Reflect.get |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.set |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.has |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.deleteProperty |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.getOwnPropertyDescriptor |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.defineProperty |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.getPrototypeOf |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.setPrototypeOf |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.isExtensible |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.preventExtensions |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.ownKeys, string keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.ownKeys, symbol keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.apply |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct sets new.target meta-property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct creates instances from third argument | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct, Array subclassing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct, RegExp subclassing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct, Function subclassing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.construct, Promise subclassing | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §Promise |
8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | ||
| §basic functionality |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §constructor requires new | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise.prototype isn't an instance | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise.all |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise.all, generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise.race |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise.race, generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise[Symbol.species] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol |
12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §typeof support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.defineProperty support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §symbols inherit from Symbol.prototype | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §cannot coerce to string or number | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §can convert with String() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §new Symbol() throws | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object(symbol) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §JSON.stringify ignores symbol primitives | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §JSON.stringify ignores symbol objects | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §global symbol registry | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §well-known symbols[4] | 26/26 | 26/26 | 26/26 | 26/26 | 26/26 | 26/26 | 26/26 | 26/26 | 26/26 | 26/26 | ||
| §Symbol.hasInstance |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.isConcatSpreadable |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.iterator, existence |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.iterator, arguments object | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, existence |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, Array.prototype.concat | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, Array.prototype.filter | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, Array.prototype.map | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, Array.prototype.slice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, Array.prototype.splice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, RegExp.prototype[Symbol.split] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.species, Promise.prototype.then | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.replace |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.search |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.split |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.match |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.match, RegExp constructor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.match, String.prototype.startsWith | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.match, String.prototype.endsWith | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.match, String.prototype.includes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.toPrimitive |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.toStringTag |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.toStringTag affects existing built-ins | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.toStringTag, new built-ins | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.toStringTag, misc. built-ins | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Symbol.unscopables |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Built-in extensions | ||||||||||||
| §Object static methods | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | ||
| §Object.assign |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.is |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.getOwnPropertySymbols |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.setPrototypeOf |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §function "name" property |
17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | ||
| §function statements | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §function expressions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §new Function | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §bound functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §variables (function) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object methods (function) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §accessor properties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §shorthand methods (no lexical binding) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §symbol-keyed methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class statements | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class expressions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §variables (class) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §object methods (class) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class prototype methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §class static methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §isn't writable, is configurable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String static methods | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | ||
| §String.raw |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.fromCodePoint |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype methods | 9/10 | 9/10 | 9/10 | 10/10 | 9/10 | 9/10 | 10/10 | 10/10 | 10/10 | 10/10 | ||
| §String.prototype.codePointAt |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.normalize |
No | No | No | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §String.prototype.repeat |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.startsWith |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.startsWith throws on RegExp | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.endsWith |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.endsWith throws on RegExp | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.includes |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype[Symbol.iterator] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String iterator prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype properties |
6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §RegExp.prototype.flags |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.match] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.replace] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.split] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.search] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp[Symbol.species] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array static methods | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | ||
| §Array.from, array-like objects |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from, generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from, generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from, instances of generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from map function, array-like objects | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from map function, generator instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from map function, generic iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from map function, instances of iterables | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from, iterator closing | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.of |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array[Symbol.species] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype methods | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | ||
| §Array.prototype.copyWithin |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.find |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.findIndex |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.fill |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.values |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.entries |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype[Symbol.iterator] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array iterator prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype[Symbol.unscopables] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number properties | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | ||
| §Number.isFinite |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.isInteger |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.isSafeInteger |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.isNaN |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.parseFloat |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.parseInt |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.EPSILON |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.MIN_SAFE_INTEGER |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number.MAX_SAFE_INTEGER |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math methods | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | 17/17 | ||
| §Math.clz32 |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.imul |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.sign |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.log10 |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.log2 |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.log1p |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.expm1 |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.cosh |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.sinh |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.tanh |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.acosh |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.asinh |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.atanh |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.trunc |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.fround |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.cbrt |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Math.hypot |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Date.prototype[Symbol.toPrimitive] |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Subclassing | ||||||||||||
| §Array is subclassable | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | ||
| §length property (accessing) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §length property (setting) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.isArray support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.concat | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.filter | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.map | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.slice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.splice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.of | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp is subclassable | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.exec | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.test | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Function is subclassable | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §can be called | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct prototype chain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §can be used with "new" | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Function.prototype.call | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Function.prototype.apply | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Function.prototype.bind | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise is subclassable | 4/4 | 4/4 | 4/4 | 4/4 | 0/4 | 0/4 | 4/4 | 4/4 | 4/4 | 4/4 | ||
| §basic functionality | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §correct prototype chain | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §Promise.all | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §Promise.race | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §miscellaneous subclassables | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §Boolean is subclassable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Number is subclassable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String is subclassable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Error is subclassable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Map is subclassable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Set is subclassable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Misc | ||||||||||||
| §prototype of bound functions | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | ||
| §basic functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §generator functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §arrow functions | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §classes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §subclasses | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy, internal 'get' calls |
36/36 | 36/36 | 36/36 | 36/36 | 35/36 | 35/36 | 36/36 | 36/36 | 36/36 | 36/36 | ||
| §ToPrimitive | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §CreateListFromArrayLike | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §instanceof operator | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §HasBinding | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §CreateDynamicFunction | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §ClassDefinitionEvaluation | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §IteratorComplete, IteratorValue | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §ToPropertyDescriptor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.assign | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.defineProperties | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Function.prototype.bind | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Error.prototype.toString | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.raw | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp constructor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.flags | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.test | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.toString | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.match] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.replace] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.search] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype[Symbol.split] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.concat | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype iteration methods | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.pop | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.reverse | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.shift | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.splice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.toString | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §JSON.stringify | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Promise resolve functions | Yes | Yes | Yes | Yes | No | No | Yes | Yes | Yes | Yes | ||
| §String.prototype.match | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.replace | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.search | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype.split | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Date.prototype.toJSON | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy, internal 'set' calls |
11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | 11/11 | ||
| §Object.assign | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.from | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.of | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.copyWithin | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.fill | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.pop | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.push | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.reverse | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.shift | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.splice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.unshift | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy, internal 'defineProperty' calls |
2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | ||
| §[[Set]] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §SetIntegrityLevel | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy, internal 'deleteProperty' calls |
6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §Array.prototype.copyWithin | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.pop | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.reverse | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.shift | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.splice | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Array.prototype.unshift | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy, internal 'getOwnPropertyDescriptor' calls |
4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | 4/4 | ||
| §[[Set]] | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.assign | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.prototype.hasOwnProperty | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Function.prototype.bind | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Proxy, internal 'ownKeys' calls |
3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | ||
| §SetIntegrityLevel | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §TestIntegrityLevel | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §SerializeJSONObject | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object static methods accept primitives | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | 10/10 | ||
| §Object.getPrototypeOf |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.getOwnPropertyDescriptor |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.getOwnPropertyNames |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.seal |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.freeze |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.preventExtensions |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.isSealed |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.isFrozen |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.isExtensible |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.keys |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §own property order | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | 7/7 | ||
| §Object.keys | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.getOwnPropertyNames | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.assign | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §JSON.stringify | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §JSON.parse | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.ownKeys, string key order | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Reflect.ownKeys, symbol key order | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Updated identifier syntax | 2/3 | 2/3 | 2/3 | 2/3 | 2/3 | 2/3 | 3/3 | 3/3 | 3/3 | 3/3 | ||
| §var ⸯ; | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §var 𐋀; | No | No | No | No | No | No | Yes | Yes | Yes | Yes | ||
| §no escaped reserved words as identifiers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §miscellaneous | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | 9/9 | ||
| §duplicate property names in strict mode | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §no semicolon needed after do-while | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §no assignments allowed in for-in head in strict mode | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §accessors aren't constructors | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Invalid Date | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp constructor can alter flags | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.toString generic and uses "flags" property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §built-in prototypes are not instances | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §function 'length' is configurable | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| Annex b | ||||||||||||
| §non-strict function semantics[5] | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | ||
| §hoisted block-level function declaration | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §labeled function statements | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §function statements in if-statement clauses | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §__proto__ in object literals |
5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | 5/5 | ||
| §basic support | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §multiple __proto__ is an error | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §not a computed property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §not a shorthand property | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §not a shorthand method | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §Object.prototype.__proto__ |
6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | ||
| §get prototype | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §set prototype | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §absent from Object.create(null) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §present in hasOwnProperty() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §correct property descriptor | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §present in Object.getOwnPropertyNames() | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §String.prototype HTML methods | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | ||
| §existence |
Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §tags' names are lowercase | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §quotes in arguments are escaped | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp.prototype.compile |
2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | 2/2 | ||
| §basic functionality | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §returns this | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §RegExp syntax extensions | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | 8/8 | ||
| §hyphens in character sets | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §invalid character escapes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §invalid control-character escapes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §invalid Unicode escapes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §invalid hexadecimal escapes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §incomplete patterns and quantifiers | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §octal escape sequences | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §invalid backreferences become octal escapes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
| §HTML-style comments | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | ||
[1] Note that prior to ES6, it was recommended that ES5 implementations forbid block-level declarations in strict mode.
[2] The 2015 version of the specification also specifies an "enumerate" handler, which was removed in the 2016 version.
[3] The 2015 version of the specification also specifies Reflect.enumerate, which was removed in the 2016 version.
[4] Functionality for Symbol.iterator is tested by the "generic iterators" subtests for the spread (...) operator, for..of loops, destructuring, yield *, and Array.from.
[5] The 2015 version of the specification contains multiple bugs for hoisted block-level function declaration semantics, which these tests disregard.
[6] Note that this is distinct from the existence or functionality of Object.prototype.__proto__.