Topics in this subject
JavaScript 3 min read Updated 4 Aug 2026

Part 30 — Appendix

ECMAScript version timeline, Common quirks (quick answers), Common beginner mistakes, Interview traps checklist, Glossary (A–Z, condensed)

ECMAScript version timeline#

Version Year Highlights
ES1–3 1997–1999 base language, regex, try/catch
ES5 2009 strict mode, JSON, array iteration, property descriptors, Object.create/defineProperty
ES6/ES2015 2015 let/const, arrow fns, classes, modules, promises, Map/Set, template literals, destructuring, default/rest/spread, generators, Symbol, Proxy/Reflect
ES2016 2016 **, Array.includes
ES2017 2017 async/await, Object.entries/values, string padding
ES2018 2018 rest/spread for objects, async iteration, Promise.finally, regex improvements
ES2019 2019 Array.flat/flatMap, Object.fromEntries, optional catch binding, trimStart/End
ES2020 2020 optional chaining ?., nullish ??, BigInt, Promise.allSettled, globalThis, dynamic import, matchAll
ES2021 2021 replaceAll, logical assignment &&= ||= ??=, Promise.any, numeric separators, WeakRef
ES2022 2022 class fields, private #, static blocks, top-level await, Array.at, Object.hasOwn, error.cause, #x in obj
ES2023 2023 immutable array methods toSorted/toReversed/toSpliced/with, findLast/findLastIndex, hashbang
ES2024 2024 Object.groupBy, Promise.withResolvers, Array.fromAsync, Atomics.waitAsync, well-formed unicode strings
ES2025 2025 Iterator helpers (map/filter/take/drop on iterators), Set methods (union/intersection/difference), RegExp.escape, import attributes, duplicate named capture groups

Common quirks (quick answers)#

  • typeof null === "object" — historical bug.
  • NaN !== NaN — IEEE-754; use Number.isNaN.
  • 0.1 + 0.2 !== 0.3 — float precision.
  • [] + [] is ""; {} + [] is 0 at statement start.
  • sort() sorts as strings by default.
  • Math.max() is -Infinity; Math.min() is Infinity.
  • "😀".length === 2 — surrogate pairs.
  • new Date(2025, 1, 1) is February (0-indexed months).
  • Arrays are objects; typeof [] === "object".

Common beginner mistakes#

Using var; relying on coercion; == instead of ===; mutating state directly in framework code; forgetting await; await in forEach; not returning inside .then; missing .catch; setting innerHTML from user input; comparing objects with === expecting value equality; forgetting break in switch; off-by-one and 0-indexed months; not clearing timers/listeners.

Interview traps checklist#

Loop + closure (var vs let) · micro vs macrotask order · this loss on detached methods · shallow vs deep copy · float equality · NaN checks · falsy list · Promise.all fail-fast vs allSettled · hoisting/TDZ · prototype chain · sequential vs parallel await · [] == ![].

Glossary (A–Z, condensed)#

ASI automatic semicolon insertion · Binding name↔value link · Closure fn + captured scope · Coercion implicit type conversion · Currying f(a)(b)(c) · Deopt engine dropping optimized code · Event loop scheduler for async callbacks · Falsy values coercing to false · Generator pausable function (function*) · Hoisting declarations processed first · IIFE immediately-invoked fn expression · JIT just-in-time compilation · Lexical scope scope by source position · Macrotask timer/IO callback · Microtask promise callback · Mutation changing a value in place · Prototype object an object inherits from · Pure function no side effects, deterministic · Realm an execution environment (iframe/worker) · TDZ temporal dead zone · Thunk deferred computation · Tree shaking dead-code elimination · Truthy values coercing to true · WeakMap object-keyed, GC-friendly map.

FAQ#

Do I need TypeScript? For anything non-trivial or team-based, strongly recommended — it catches whole classes of bugs at author time. Is JavaScript multithreaded? The language runs on one thread; you get concurrency via the event loop and true parallelism via Web Workers / worker threads. When BigInt vs Number? Exact integers beyond 2^53−1; never for decimals or perf-critical arithmetic. localStorage or cookies for auth tokens? Prefer httpOnly cookies to reduce XSS token theft.


End of handbook. This is a dense reference covering all 30 parts; the interview bank and exercise/project sets are intentionally curated rather than exhaustive — ask to expand any tier or generate any project's full solution as its own file.