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 |