# Release 2018-03-02 * Chapter “New regular expression featuresâ€: * Fixed a bug in copyWithIgnoreCase() * New function: copyAndEnsureFlag() # Release 2016-03-02 * New: per-chapter TOCs * Chapter “Callable entities in ECMAScript 6â€: many small improvements * Chapter “Arrow functionsâ€: several improvements and major rewrites of three sections: * Arrow functions bind very loosely * Returning object literals * Immediately-invoked arrow functions # Release 2016-11-19 * Chapter “Parameter handlingâ€: better overview section, a few minor improvements. * Chapter “Destructuringâ€: various smaller improvements and fixes. * Chapter “Proxiesâ€: new section “Pitfall: not all objects can be wrapped transparently by proxiesâ€. # Release 2016-11-07 * Major rewrite of chapter “Template literalsâ€. * Numerous smaller improvements in chapter “Variables and scopingâ€. * Completely new overview section for chapter “Generatorsâ€. * New section “Three ways of understanding Promises†in chapter “Promisesâ€. # Release 2016-10-29 Many smaller fixes and improvements in the following chapters: * New string features * Symbols # Release 2016-09-09 Numerous smaller improvements in chapters 1–5. # Release 2016-04-11 * New Sect. “Tips for error handling†in Chap. “Promises for asynchronous programming†* New Sect. “Throwing an exception from a generator†in Chap. “Generators†* Made sure destructuring assignments that start with a curly brace are correct everywhere (you need to parenthesize the whole expression, not just the pattern). * Complete rewrite of Sect. “Traversing properties in ES6†in Chap. “New OOP features besides classes†* Fixed terminology: some operations “traverse†properties (for-in, Object.keys(), etc.); iterators “iterate over†the “items†of an iterable. * Fixed many errata. * Major rewrite of the section on `Promise.resolve()` in Chap. “Promises for asynchronous programming†* Major rewrite of Sect. “ES6-compatible Promise libraries†in Chap. “Promises for asynchronous programming†# Release 2016-04-05 * Added a short TOC. * Improved intro for Sect. “Composing Promises†in Chap. “Promises for asynchronous programming†* New entry “How can I use ES6 today?†in Chap. “FAQ: ECMAScript 6†* New Sect. “Arrow functions versus `bind()`†in Chap. “Arrow functions†# Release 2016-03-28 * New chapter: “An overview of what’s new in ES6†* New Sect. “Other ways of creating Promises†in Chap. “Promises for asynchronous programming†# Release 2016-03-23 * New Sect. “Removing holes from Arrays†in Chap. “New Array features†* Complete rewrite of Sect. “Creating Arrays filled with values†in Chap. “New Array features†* New Sect. “Line terminators in template literals are always LF (`\n`)†in Chap. “Template literals†* New Sect. “Benefit: compact bundling, no custom bundle format†in Chap. “Modules†# Release 2016-03-13 * Substantial rewrite of Chap. “Promises for asynchronous programmingâ€. New sections: “Parallel computations via `Promise.all()`†and “Common Promise mistakes†* New Sect. “Imports and exports must be at the top level†in Chap. “Modules†* FAQ in Chap. “Generatorsâ€: “Why use the keyword `function*` for generators and not `generator`?†* FAQ in Chap. “Generatorsâ€: “Is `yield` a keyword?†* FAQ in Chap. “Maps and Setsâ€: “When would I use an object as a key in a Map?†* Explained one more use case for WeakMaps: “Managing listeners†(Chap. “Maps and Setsâ€) * New Sect. “No separators between members of class definitions†in Chap. “Classes†* New Sect. “Example: an iterable version of `exec()`†in Chap. “New regular expression features†# Release 2016-02-23 * Syntax highlighting finally upgraded to ES6 (esp. template literals look much better now). * New Sect. “Examples of name clashes in JavaScript’s standard library†in Chap. “Symbols†* Major rewrite of Sect. “Symbols as keys of properties†in Chap. “Symbols†* New Sect. “The `name` property of functions†in Chap. “Callable entities in ECMAScript 6†* Complete rewrite of Sect. “Iterating over property keys in ES6†in Chap. “New OOP features besides classesâ€. * More content in Sect. “Examples of destructuring†of Chap. “Destructuringâ€. * New Sect. “Pitfall: `Object.freeze()` is shallow†in Chap. “Variables and scopingâ€. * More examples for tagged template literals in Chap. “Template literalsâ€. * Many small improvements and corrections. # Release 2016-02-14 * New chapter 17: “The for-of loop†(I moved the existing material there) * Rewrote the intro for the chapter on Promises. * New glossary entries: “Strict mode versus sloppy modeâ€, “Bindings and environments†* Mentioned that the enumerate trap was recently removed (proxies). * New Sect. “Sources of this book†in Chap. “What you need to know about this book†* Example “Why are per-iteration bindings useful?†in Chap. “Variables and scopingâ€. * Lots of small fixes, improvements and additions. # Release 2016-01-18 * New Sect. “Simple mixins†in Chap. “Classes†* Major rewrite of Chap. “Callable entities in ECMAScript 6†* New Sect. “Classes have inner names†in Chap. “Classes†* New material on trailing commas in object literals in Chap. “Coding style tips for ECMAScript 6†* New sections in Chap. “Template literalsâ€: Sect. “Text templating with untagged template literals†and Sect. “A tag function for HTML templating†* New Sect. “Example: assembling regular expressions†in Chap. “Template literals†* Improved overview for Chap. “Iterables and iterators†* Chap. “Symbolsâ€: improved overview (at the beginning) and summary (at the end) * Better introductory paragraph for Sect. “What is tail call optimization?†in Chap. “Tail call optimization†* Significant rewrite of Sect. “Is ES6 bloated?†in Chap. “FAQ: ECMAScript 6†# Release 2016-01-12 * Chap. “Classesâ€: New FAQ entry “How do I determine whether a function was invoked via `new`?†* Chap. “Callable entities in ECMAScript 6â€: major rewrite. * Chap. “Classesâ€: New FAQ entry “How are classes different from traditional functions?†* Complete rewrite of Sect. “Managing the private data of classes†in Chap. “Classesâ€. * Major rewrite of Sect. “The details of subclassing†in Chap. “Classesâ€. * New Sect. “Recommendation: avoid mixing default exports and named exports†in Chap. “Modules†* New Sect. “Benefit: dead code elimination during bundling†in Chap. “Modules†* New Sect. with some new content: “Why a new approach to importing?†in Chap. “Modules†* Significant rewrite of Sect. “Advantages of ECMAScript 6 modules†in Chap. “Modules†* Better intro for Sect. “The species pattern†in Chap. “Classes†* Minor improvements in Chap. “Metaprogramming with proxies†* Much improved introduction in Sect. “Implementing tag functions†of Chap. “Template literals†* I switched all code to “prefer const†(from “prefer letâ€). This is a massive change. Let me know if you spot any errors: http://exploringjs.com/#errata # Release 2016-01-07 * Chap. “First steps with ECMAScript 6â€: major rewrite of Sect. “From `var` to `let`/`const`â€. * Chap. “First steps with ECMAScript 6â€: new sections on new string methods and new Array methods. * Complete rewrite of symbol FAQ entry “Can I use symbols to define private properties?†* Major rewrite of the section on WeakMaps. * New Sect. “The numeric range of Array indices†in Chap. “New Array featuresâ€. * Various smaller improvements in Chap. “Generatorsâ€. * Various smaller improvements in Chap. “Symbols†(e.g. a table in the overview at the beginning) * Major rewrite of Sect. “Overview†of Chap. “Destructuringâ€. # Release 2016-01-01 * A few minor fixes. # Release 2015-12-30 Announcement: I have written a new book: “Setting up ES6â€. Everyone who owns “Exploring ES6†right now can get a free copy via this coupon (valid until January 11): [sent via email to owners] As a step towards a stable version 1.0 of “Exploring ES6â€, along with a print version (hopefully by mid-2016), I have moved Chap. “Deploying ES6†to the new book. Apologies for the inconveniences this causes, but it was the only way of keeping “Exploring ES6†from aging too quickly. Other changes: * New entry in the glossary: “protocol†* Major rewrite of Sect. “The temporal dead zone†in Chap. “Variables and scopingâ€. # Release 2015-12-27 * New section “Configuring which objects are spread by `concat()`†in the chapter on Arrays. * New section “Assigning versus defining properties†in Chap. “New OOP features besides classes†* New section “Enumerability in ECMAScript 6†in Chap. “New OOP features besides classes†* New section “Customizing basic language operations via well-known symbols†in Chap. “New OOP features besides classes†* New sections in Chap. “Maps and Setsâ€: “Arbitrary Maps as JSON via Arrays of pairs†and “String Maps as JSON via objects†* Chap. “metaprogramming with proxiesâ€: new section “Intercepting method callsâ€, various smaller improvements * Complete rewrite of Sect. “Well-known symbols†in the chapter on symbols. * New section “String methods that delegate regular expression work to their parameters†in the chapter on strings. # Release 2015-12-25 * Array chapter has a new section on holes * Removed outdated section on bundling # Release 2015-12-19 * A lot of work went into a complete rewrite of chapter “Deploying ECMAScript 6â€: * More type checkers and transpilers are mentioned (Closure Compiler, Flow, etc.) * Everything was upgraded to Babel 6. * I’m always using npm for build tasks (I previously used gulp in the section on deploying client-side ES6 via webpack). * A few smaller fixes. # Release 2015-11-25 * Fixed many errata * New section on `__proto__` in the chapter “New OOP features besides classes†* New chapter “About the author†# Release 2015-10-19 * Foreword by Allen Wirfs-Brock * Rewrite of section “Why should I read this book?†in chapter “What you need to know about this book†* A few smaller fixes # Release 2015-10-03 * New chapter: “Typed Arrays†* Complete rewrite of Sect. “Methods versus callbacks†in Chap. “Callable entities in ECMAScript 6†* I improved the following two sections (chapter “Parameter handlingâ€): * ‘Referring to other parameters in default values’ * ‘Referring to “inner†variables in default values’ # Release 2015-09-20 * New chapter: “New regular expression features†* New chapter: “Unicode in ES6†* New entry in the ES6 FAQ: “Isn’t ECMAScript 6 now called ECMAScript 2015?†* A few smaller fixes and changes. # Release 2015-09-12 * Chapter on modules: I changed much of this chapter and am now describing imports as views on exports. * Complete rewrite of section “Default exports (one per module)â€. * New section: “Details: imports as views on exportsâ€. * Rearranged several sections, so that information is introduced more incrementally. * New FAQ entries. * Chapter on Arrays: * Explanation of Array.prototype.copyWithin(). * New section “Overview†at the beginning. * Various smaller fixes. # Release 2015-08-15 * New chapter: “First steps with ECMAScript 6†# Release 2015-08-04 * New chapter: “Tail call optimization†* One additional TOC level * Back, due to popular demand: Sect 15.5, “Constructor calls explained via JavaScript code†* Several minor corrections and fixed typos # Release 2015-06-28 * Moved the HTML spec links * From: https://people.mozilla.org/~jorendorff/es6-draft.html * To: http://www.ecma-international.org/ecma-262/6.0/ * Mentioned the old terminology in the template literals FAQ. * Chapter on modules, Sect. “All exporting stylesâ€: default exports were missing the keyword `default`. * Removed Sect 15.5, “Constructor calls explained via JavaScript code†* Sect. 9.1.3: Fixed the table: classes are block-scoped, `import` is module-global only. * Chapter on classes: fixed the code of the functions `SpeciesConstructor()` and `isObject()`. * Minor edits to make FAQ headlines more consistent * Fixed a few minor submitted errata # First release: 2015-06-13