JavaScript ES6+ Features: Learn 110 Flashcards Sorted by ECMAScript Year
Learn JavaScript ES6+ with 110 flashcards: let/const, arrows, destructuring, Promises, async/await, ?? and ?. — tagged by ECMAScript year, with 3 cards to fix.

Studying. But it's also a video game. 🎮
Flashcards, quizzes and games that make you actually remember.
Posted by
Related reading
Learn Vue.js Core Concepts: 30 Flashcards on Reactivity, Directives and the Vue Ecosystem
Learn Vue.js with deck XT7941: 30 flashcards on directives, virtual DOM, reactivity, computed vs watch, Pinia, Vue Router and Vite, plus the cards to update.
OWASP Top 10 Flashcards: Study the 2021 List and Update It for 2025
Study OWASP Top 10 with 35 flashcards on injection, SSRF, SAST, DAST, IAST and RASP, then add the missing #1 risk and the new OWASP 2025 ranking.
Learn CSS Flexbox and Grid in German: 58 Flashcards on Hauptachse, Spuren and Zellen
Learn CSS Flexbox and Grid with German backs: 58 real flashcards on Hauptachse, Querachse, Spur and Zelle, plus the Zeile trap and three backs to fix.
The JavaScript: ES6+ Features deck (code SW1185, 110 cards) on Flip It is a definition deck: one feature per front, one-line explanation plus a code sample on the back. It covers far more than ES6 — and the fastest way to learn it is to know which year each card belongs to.
Study this deck: JavaScript: ES6+ Features
1 / 10let vs var
Tap the card for the answer · swipe right if you knew it, left if not
Sample cards
| Front | Back |
|---|---|
| let vs var | let has block scope and cannot be redeclared; var has function scope |
| Can you modify properties of an object declared with const? | Yes, const prevents reassignment but not mutation |
| Arrow function | Concise syntax using => that lexically binds this |
| Destructuring with rest | const {a, ...rest} = obj |
| Promise.allSettled() | Waits for all Promises to settle and returns their results |
| Where can you use the await keyword? | Only inside async functions (or at top level in modules) |
| Nullish coalescing (??) | Returns the right operand when the left is null or undefined |
| Object.seal() | Prevents adding/removing properties but allows changing existing ones |
| typeof null | 'object' (a known JavaScript quirk) |
What you'll master
let, const, block scope, arrow functions and lexical this, template literals, array and object destructuring (with defaults and rest), spread, rest parameters, default parameters, property and method shorthand, computed property names, classes, constructor, extends, super, static methods, getters and setters, Promises and their three states, then/catch, async/await with try/catch, Promise.all / race / allSettled, import/export (named and default), for...of vs for...in, Map, Set, WeakMap, WeakSet, Symbol, generators and yield, Proxy, Reflect, Object.assign/keys/values/entries/freeze/seal, Array.from/of/find/findIndex/includes/entries/keys/values/isArray, startsWith, endsWith, repeat, padStart, padEnd, optional chaining, nullish coalescing, BigInt and the ** operator.
Tag every card with its ECMAScript year
"ES6+" hides a decade of releases. Adding the year to each hint turns a flat list into a timeline you can reason with — and tells you what an older runtime will reject:
- ES2015 (ES6): let/const, arrows, classes, Promises, modules, Map/Set, Symbol, generators, Proxy/Reflect, for...of, Array.from, find
- ES2016: Array.prototype.includes,
** - ES2017: async/await, Object.values/entries, padStart/padEnd
- ES2018: object rest/spread (
{...object},const {a, ...rest}) - ES2020:
?.,??, BigInt, Promise.allSettled - ES2022: top-level await in modules
The second half re-asks the first
Roughly 30 of cards 61-110 repeat an earlier card in new words: const vs let, template literals, spread, rest, default parameters, Promise states, .then/.catch, Map, Set (cards 29 and 79 are word-for-word identical), Symbol, optional chaining, find/findIndex and every String method. Suspend the duplicates and keep what is genuinely new in the tail: cards 62-63, 74-75, 77-78, 80-81, 84, 91, 102-104 and 106-110.
Three cards to fix
- Card 84 reads "|| vs ?" — the front should be || vs ??. Its back lists 0, '' and false as falsy; add null, undefined and NaN so the contrast with
??is complete. - Card 107: Object.freeze() is shallow — nested objects stay mutable. Add that to the back.
- Card 3: arrow functions also have no own
argumentsand cannot be called withnew.
Write these missing cards
The deck stops at ES2020. Add: Array.prototype.flat/flatMap (ES2019), Promise.any, replaceAll and the logical assignment operators ??=, ||=, &&= (ES2021), .at() and private #fields (ES2022), and Object.groupBy (ES2024).
Building a front-end stack card by card? Pair this deck with our CSS box model, selectors and media queries study guide.
Ready to learn faster? 🚀
Join FLIP IT for free and turn studying into a game.