Learn JavaScript Next
Explore the best new features of ECMAScript 2015, 2016, and beyond
JD Isaacks
  • MEAP began November 2016
  • Publication in Early 2018 (estimated)
  • ISBN 9781617294204
  • 400 pages (estimated)
  • printed in black & white

Modern browsers, Node, and major libraries have already started to adopt next generation JavaScript features. Isn't it time for you to learn ES6 and ES7? They can make your JavaScript simpler to read, less prone to common errors, and much easier to use in asynchronous programs.

Learn Javascript Next teaches JavaScript developers the most important additions from both ES6 and ES7. This clearly-written guide to JavaScript's newest features contains lots of short easy-to-digest chapters and exercises to help you master each new concept. You'll start with the basics including new syntax, new variable declarations, new data types and methods, and ES6 Modules Then you'll learn more advanced topics, like Promises, Classes, Iterators, Async Functions, Generators, and Observables. By the end of this book, you'll be able to read and understand code examples and communicate with other devs using ES6 or later concepts.

Table of Contents detailed table of contents

Unit 0: Getting Setup

Lesson i Standards Process

Lesson ii Getting Setup with Babel & Browserify

Lesson iii Creating modules with Browserify

Unit 1: Variables & Strings

Lesson 1: Declaring Variables with let

1.1 How Scope Works with let

1.1.1 Why The Block Scope of let is Preferred

1.2 How Hoisting Works with let

1.3 Should I Use let Instead of var From Now On?

1.4 Quiz Answers

1.5 Exercise

Lesson 2: Declaring constants with const

2.1 How Constants Work

2.2 When to Use Constants

2.3 Quiz Answers

2.4 Exercise

2.5 Summary

Lesson 3: New String Methods

3.1 Searching Strings

3.2 Padding Strings

3.3 Summary

3.4 Exercise

3.5 Quiz Answers

Lesson 4: Template Literals

4.1 What are Template Literals?

4.1.1 String Interpolation with Template Literals

4.1.2 Multiline Strings with Template Literals

4.2 Template Literals are not Reusable Templates

4.3 Custom Processing with Tagged Template Literals

4.4 Summary

4.5 Exercise

4.6 Quiz Answers

Lesson 5: Capstone 1: Building a Domain Specific Language

5.1 Create Some Helper Functions

5.2 Create An HTML Escaping DSL

5.3 Create a DSL for Converting Arrays Into HTML

5.4 Summary

Unit 2: Objects & Arrays

Lesson 6: New Array Methods

6.1 Constructing Arrays with Array.from

6.2 Constructing Arrays with Array.of

6.3 Constructing Arrays with Array.prototype.fill

6.4 Searching in Arrays with Array.prototype.includes

6.5 Searching in Arrays with Array.prototype.find

6.6 Summary

6.7 Exercise

6.8 Quiz Answers

Lesson 7: Object.assign

7.1 Setting Default Values with Object.assign

7.2 Extending Objects with Object.assign

7.3 Preventing Mutations When Using Object.assign

7.4 How Object.assign Assigns Values

7.5 Summary

7.6 Exercise

7.7 Quiz Answers

Lesson 8: Destructuring

8.1 Destructuring Objects

8.2 Destructuring Arrays

8.3 Combining Array & Object Destructuring

8.4 What Types Can Be Destructured

8.5 Summary

8.6 Exercise

8.7 Quiz Answers

Lesson 9: New Object Literal Syntax

9.1 Shorthand Property Names

9.2 Shorthand Method Names

9.3 Computed Property Names

9.4 Summary

9.5 Exercise

9.6 Quiz Answers

Lesson 10: Symbol - A New Primitive

10.1 Using Symbols as Constants

10.2 Using Symbols as Object Keys

10.3 Creating Behavior Hooks with Global Symbols

10.4 Modifying Object Behavior with Well Known Symbols

10.5 Symbol Gotchas

10.6 Summary

10.7 Exercise

10.8 Quiz Answers

Lesson 11: Simulating a Lock & Key

11.1 Creating the Lock & Key System

11.2 Creating a Choose the Door Game

Unit 3: Functions

Lesson 12: Default Parameters & Rest

12.1 Default Parameters

12.2 Using Default Params to Skip Recalculating Values

12.3 Gathering Parameters with the Rest Operator

12.4 Using Rest to Pass Arguments Between Functions

12.5 Summary

12.6 Exercise

12.7 Quiz Answers

Lesson 13: Destructuring Parameters

13.1 Destructuring Array Parameters

13.2 Destructuring Object Parameters

13.3 Simulating Named Parameters

13.4 Creating Aliased Parameters

13.5 Summary

13.6 Exercise

13.7 Quiz Answers

Lesson 14: Arrow Functions

14.1 Succinct Code with Arrow Functions

14.2 Maintaining Context with Arrow Functions

14.3 Arrow Function Gotchas

14.4 Summary

14.5 Exercise

14.6 Quiz Answers

Lesson 15: Intro to Generator Functions

15.1 Defining Generator Functions

15.2 Using Generator Functions

15.3 Creating Infinite Lists with Generator Functions

15.4 Summary

15.5 Quiz Answers

Lesson 16: The Prisoner's Dilemma

16.1 Generating Prisoners

16.2 Getting Prisoners To Interact

16.3 Getting and Storing The Results

16.4 Putting the Simulation Together

16.5 Which Prisoner Does Best?

Unit 4: Modules

Lesson 17: Creating Modules

17.1 Module Rules

17.2 Creating Modules

17.3 When Does a JavaScript File Become a Module

17.4 Summary

17.5 Exercise

17.6 Quick Check Answers

Lesson 18: Using Modules

18.1 Specifying a Module's Location

18.2 Importing Values From Modules

18.3 How Imported Values Are Bound

18.4 Importing Side Effects

18.5 Breaking Apart & Organizing Modules

18.6 Summary

18.7 Quick Check Answers

Lesson 19: Capstone 4: Hangman Game

19.1 Planning

19.2 The Words Module

19.3 The Status Module

19.4 The Game's Interface Modules

19.5 The Index

Unit 5: Iterators

Lesson 20 Iteration

Lesson 21 Spread

Lesson 22 Maps

Lesson 23 Sets

Lesson 24 WeakMaps & WeakSets

Lesson 25 Generators

Lesson 26 Capstone

Unit 6: Classes

Lesson 27 Classes

Lesson 28 Extending Classes

Lesson 29 Decorators

Lesson 30 Capstone

Unit 7: Working Asynchonously

Lesson 31 Using Promises

Lesson 32 Defining Promises

Lesson 33 Promise Error Handling

Lesson 34 Async Functions

Lesson 35 Capstone

Unit 8: Working Reactively

Lesson 36 Intro to Reactive Programming with Observables

Lesson 37 Creating Observables

Lesson 38 Hot vs Cold Observables

Lesson 39 Manipulating Observables

Lesson 40 RxJS

Lesson 41 Capstone

What's inside

  • Learn the new features of ES6 (ES2015)
  • Use all of the newest JavaScript features right away
  • Setup an ES6/7 project using Babel and Browserify
  • Writing elegant asynchronous code with async functions, generators, and promises
  • Using classes instead of constructors
  • Creating custom iterables and modifying built in ones
  • Using and troubleshooting modules and classes to build complex applications

About the reader

This book is for developers who are comfortable writing basic Javascript code. Knowledge of the DOM and Node.js will be helpful, but not required.

About the author

J.D. Isaacks has been a developer for over 10 years, focusing on EcmaScript-based languages and is a Javascript instructor for The Iron Yard. He has contributed to projects including React, Backbone, and D3. He is also a member of both the Bower.js and Moment.js teams and the creator of GitGutter, one of the most popular Sublime Text packages.

Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
MEAP combo $39.99 pBook + eBook
MEAP eBook $31.99 pdf + ePub + kindle

FREE domestic shipping on three or more pBooks