| Desktop browsers | ||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Feature name | IE 104% | IE 1114% | Edge[3]63% | FF 11-128% | FF 139% | FF 1613% | FF 1715% | FF 1817% | FF 2321% | FF 2421% | FF 2523% | FF 2728% | FF 2828% | FF 2932% | FF 3033% | FF 31 ESR34% | FF 3235% | FF 3337% | FF 3448% | FF 3549% | FF 3657% | FF 3759% | FF 3860% | FF 3965% | FF 4066% | CH <195% | CH 19[4]6% | CH 21-29[4]6% | CH 30, OP 17[4]7% | CH 31, OP 18[4]7% | CH 32-33, OP 19-20[4]9% | CH 34, OP 21[4]11% | CH 35, OP 22[4]11% | CH 36, OP 23[4]12% | CH 37, OP 24[4]12% | CH 38, OP 25[4]21% | CH 39, OP 26[4]24% | CH 40, OP 27[4]24% | CH 41, OP 28[4]38% | CH 42, OP 29[4]39% | CH 43, OP 30[4]41% | CH 44, OP 31[4]45% | CH 45, OP 32[4]45% | SF 5.14% | SF 65% | SF 6.1, SF 76% | SF 7.1, SF 816% | WK52% | OP 126% | RH0% |
| §direct recursion | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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► | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 2/6 | 2/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 3/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | |
| §basic functionality | No | No | Flag | No | No | 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 | No | No | |
| §explicit undefined defers to the default | No | No | Flag | 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 | No | No | No | No | No | No | |
| §defaults can refer to previous params | No | No | Flag | No | No | 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 | No | No | |
| §temporal dead zone | No | 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 | |
| §separate scope | No | 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 | |
| §new Function() support | No | 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 | |
| §rest parameters► | 0/5 | 0/5 | 5/5 | 0/5 | 0/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 | 3/5 | 3/5 | 4/5 | 4/5 | 4/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 | |
| §basic functionality | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag | Flag | No | No | No | No | No | No | |
| §function 'length' property | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag | Flag | No | No | No | No | No | No | |
| §arguments object interaction | 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 | flag | flag | no | no | no | no | no | no | |
| §can't be used in setters | 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 | No | No | No | No | No | Flag | No | No | No | No | No | No | |
| §new Function() support | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag | Flag | No | No | No | No | No | No | |
| §spread (...) operator► | 0/12 | 0/12 | 10/12 | 0/12 | 0/12 | 1/12 | 2/12 | 2/12 | 2/12 | 2/12 | 2/12 | 8/12 | 8/12 | 8/12 | 8/12 | 8/12 | 8/12 | 8/12 | 8/12 | 8/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 0/12 | 2/12 | 6/12 | 0/12 | |
| §with arrays, in function calls | No | No | Yes | No | No | No | 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 | Flag | Flag | No | No | No | Yes | Yes | No | |
| §with arrays, in array literals | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §with strings, in function calls | No | No | Yes | No | No | No | 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 | Flag | Flag | No | No | No | No | No | No | |
| §with strings, in array literals | No | No | Yes | 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 | No | No | No | Yes | No | |
| §with astral plane strings, in function calls | No | No | Yes | No | No | No | 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 | Flag | Flag | No | No | No | No | No | No | |
| §with astral plane strings, in array literals | No | No | Yes | No | No | No | 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 | Yes | No | |
| §with generator instances, in calls | No | No | Flag | No | No | No | 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 | Flag | Flag | No | No | No | No | No | No | |
| §with generator instances, in arrays | No | No | Flag | No | No | No | 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 | Flag | Flag | No | No | No | No | No | No | |
| §with generic iterables, in calls | No | No | Yes | 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 | No | No | No | No | Flag | Flag | No | No | No | No | No | No | |
| §with generic iterables, in arrays | No | No | Yes | 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 | No | No | No | No | No | No | No | No | No | No | Yes | No | |
| §with instances of iterables, in calls | No | No | Yes | 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 | No | No | No | No | Flag | Flag | No | No | No | No | No | No | |
| §with instances of iterables, in arrays | No | No | Yes | 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 | No | No | No | No | No | No | No | No | No | No | Yes | No | |
| §object literal extensions► | 0/6 | 0/6 | 6/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 1/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 6/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 0/6 | 3/6 | 6/6 | 6/6 | 0/6 | 0/6 | 0/6 | 1/6 | 5/6 | 0/6 | |
| §computed properties | No | No | Yes | No | No | No | 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 | Yes | Yes | No | No | No | Yes | Yes | No | |
| §shorthand properties | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag | Flag | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §shorthand methods | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[10] | Yes[10] | Yes[10] | Yes[10] | Yes[10] | Yes[10] | Yes[10] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag | Flag | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §string-keyed shorthand methods | No | No | Yes | No | No | No | 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 | Flag | Flag | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §computed shorthand methods | No | No | Yes | No | No | No | 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 | Yes | Yes | No | No | No | No | Yes | No | |
| §computed accessors | No | No | Yes | No | No | No | 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 | Yes | Yes | No | No | No | No | No | No | |
| §with arrays | No | No | Yes | 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | Yes | Yes | No | |
| §with strings | No | No | Yes | 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §with astral plane strings | No | No | Yes | 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §with generator instances | 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 | No | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §with generic iterables | No | No | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | No | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §with instances of generic iterables | No | No | Yes | 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 | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §iterator closing, break | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | |
| §iterator closing, throw | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | |
| §octal literals | No | No | Yes | 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 | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §binary literals | No | No | Yes | 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 | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §octal supported by Number() | No | No | Yes | 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 | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §binary supported by Number() | No | No | Yes | 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 | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §template strings► | 0/3 | 0/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 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 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 | 3/3 | 3/3 | 3/3 | 3/3 | 3/3 | 0/3 | 0/3 | 0/3 | 0/3 | 3/3 | 0/3 | |
| §basic functionality | No | No | Yes | No | No | No | 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 | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §tagged template strings | No | No | Yes | No | No | No | 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 | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §line break normalisation | No | No | No | No | No | No | 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 | Yes | Yes | Yes | Yes | Yes | No | No | No | No | Yes | No | |
| §"y" flag | No | No | Flag | Yes | 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 | Flag | No | No | No | No | No | No | No | No | No | No | No | No | |
| §"u" flag | 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 | |
| §destructuring► | 0/32 | 0/32 | 0/32 | 14/32 | 15/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 17/32 | 21/32 | 22/32 | 23/32 | 23/32 | 23/32 | 23/32 | 23/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 0/32 | 16/32 | 25/32 | 0/32 | |
| §with arrays | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §with strings | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §with astral plane strings | No | No | No | No | No | No | 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 | Yes | No | |
| §with generator instances | No | No | No | No | No | No | 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 | |
| §with generic iterables | No | No | No | No | No | No | 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 | Yes | No | |
| §with instances of generic iterables | 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 | No | No | No | No | No | No | No | No | No | No | Yes | No | |
| §iterator closing | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | |
| §iterable destructuring expression | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §chained iterable destructuring | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §trailing commas in iterable patterns | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | |
| §with objects | No | No | No | Yes[11] | Yes[11] | 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 | Yes | Yes | No | |
| §object destructuring with primitives | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §trailing commas in object patterns | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | |
| §object destructuring expression | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §parenthesised left-hand-side is a syntax 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §chained object destructuring | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §throws on null and undefined | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §computed properties | No | No | No | No | No | No | 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 | |
| §multiples in a single var statement | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | No | |
| §nested | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §in parameters | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §in parameters, new Function() support | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | |
| §in parameters, function 'length' property | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §in for-in loop heads | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | No | |
| §in for-of loop heads | 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 | Yes | Yes | No | |
| §rest | No | No | No | No | No | No | 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 | |
| §nested rest | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | |
| §defaults in parameters | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | |
| §defaults in parameters, separate scope | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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, new Function() support | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
| §in strings | 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 | Yes | Yes | No | No | No | No | Yes | No | |
| §in identifiers | 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 | Yes | Yes | No | No | No | No | Yes | No | |
| §in 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 | |
| §can't be assigned to | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 | 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 | |
| §is block-scoped | No | Yes | Yes | 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 | No | No | No | No | No | No | No | No | No | No | No | No | |
| §redefining a const is an error | No | Yes | Yes | 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 | No | No | No | No | No | No | No | No | No | No | No | No | |
| §temporal dead zone | No | Yes | Yes | 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 | No | No | No | No | No | No | No | No | No | No | No | No | |
| §basic support (strict mode) | 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 | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §is block-scoped (strict mode) | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §redefining a const (strict mode) | 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 | No | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §temporal dead zone (strict mode) | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §basic support | No | Yes | Yes | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
| §is block-scoped | No | Yes | Yes | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | 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-loop statement scope | No | Yes | Yes | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
| §temporal dead zone | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | 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-loop iteration scope | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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) | No | Yes | Yes | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §is block-scoped (strict mode) | No | Yes | Yes | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §for-loop statement scope (strict mode) | No | Yes | Yes | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §temporal dead zone (strict mode) | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | Flag[12] | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §for-loop iteration scope (strict mode) | No | No | No | No | No | No | No | No | No | No | 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 | Yes | Yes | Yes | No | No | No | No | No | No | |
| Functions | ||||||||||||||||||||||||||||||||||||||||||||||||||
| §arrow functions► | 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 | 7/11 | 8/11 | 8/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 parameters | No | No | Yes | 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 | Flag | Flag | No | No | No | No | No | No | No | No | No | No | No | No | |
| §1 parameter, no brackets | No | No | Yes | 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 | Flag | Flag | No | No | No | No | No | No | No | No | No | No | No | No | |
| §multiple parameters | No | No | Yes | 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 | Flag | Flag | No | No | No | No | No | No | No | No | No | No | No | No | |
| §lexical "this" binding | No | No | Yes | 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 | |
| §"this" unchanged by call or apply | No | No | Yes | 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 | |
| §can't be bound, can be curried | No | No | Yes | 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 | |
| §lexical "arguments" binding | 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 line break between params and => |
No | No | Yes | 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 "prototype" property | No | No | Yes | 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 | Flag | No | No | No | No | No | No | No | No | No | No | No | No | |
| §lexical "super" binding | No | 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 | |
| §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 | |
| §class► | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 20/23 | 20/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 0/23 | 15/23 | 0/23 | |
| §class statement | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §is block-scoped | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | No | No | |
| §class expression | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §anonymous class | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §constructor | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §prototype methods | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §string-keyed methods | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §computed prototype methods | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
| §static methods | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §computed static methods | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | 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 | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §computed accessor properties | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
| §static accessor properties | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §computed static accessor properties | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | 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 name is lexically scoped | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | No | No | |
| §computed names, temporal dead zone | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
| §methods aren't enumerable | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §implicit strict mode | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §constructor requires 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 | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §extends | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §extends expressions | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §extends null | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | 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 | |
| §super► | 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 | 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 | 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 | 6/7 | 0/7 | |
| §statement in constructors | No | 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 | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §expression in constructors | No | 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 | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §in methods, property access | No | 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 | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §in methods, method calls | No | 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 | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §method calls use correct "this" binding | No | 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 | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §constructor calls use correct "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 | |
| §is statically bound | No | 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 | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | Yes | No | |
| §basic functionality | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §generator function expressions | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §correct "this" binding | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §can't use "this" 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 | |
| §sending | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §%GeneratorPrototype% | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §%GeneratorPrototype%.throw | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §%GeneratorPrototype%.return | No | No | Flag | 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 | |
| §yield operator precedence | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, arrays | No | No | Flag | No | No | No | 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, strings | No | No | Flag | No | No | No | 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, astral plane strings | No | No | Flag | No | No | No | 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 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, generator instances | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, generic iterables | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | No | No | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, instances of iterables | No | No | Flag | 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 | Flag | Flag | Flag | Flag | Yes | Yes | Yes | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §yield *, iterator closing | No | 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 | |
| §yield *, iterator closing via throw() | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | 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 generator methods | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §string-keyed shorthand generator methods | No | No | Flag | No | No | No | 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 | Flag | Yes | Yes | Yes | Yes | No | No | No | No | No | No | |
| §computed shorthand generators | No | No | Flag | No | No | No | 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 | Yes | Yes | No | No | No | No | No | No | |
| §shorthand generator methods, classes | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | Flag[15] | Flag[15] | Flag[15] | Flag[15] | Flag[15] | No | No | No | No | No | No | |
| §computed shorthand generators, classes | No | No | Flag | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes[14] | Yes[14] | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |