In this course, you'll dive into the latest changes made to the JavaScript programming language with ECMAScript 6 (ES6). You'll explore new syntax for declaring variables and constants, use template literals for easier string interpolation, and learn about more efficient ways to work with arrays and objects. You’ll also learn how to write more concise functions using arrow functions and how to simulate the illusion of classes and subclasses in JavaScript. Next, you'll look into the most recent additions to the library of JavaScript built-ins including Sets, Maps, Promising, Proxies, and Generators. And finally, you’ll write ES6 code and learn how to use polyfills and the transpiler, Babel, to ensure that your code works in browsers that do not yet support the ES6 language improvements.
## Lesson 1: Syntax
* Learn new ways to define variables
* Use destructuring to work more efficiently with arrays and objects
* Explore a new method for looping using the `for...of` loop
## Lesson 2: Functions
* Write cleaner and more concise functions using arrow functions
* Learn how the `this` keyword behaves when working with arrow functions
* Explore new ways to create extendable JavaScript classes and subclasses
## Lesson 3: Built-ins
* Experiment with new object types for Sets, Maps, WeakSets, and WeakMaps
* Handle asynchronous requests using JavaScript Promises
* Learn how generators can be used to pause the execution of a function while also maintaining its own state
## Lesson 4: Professional developer-fu
* Write ES6 code for unsupported browsers with polyfills and transpilers
* Use a transpiler to convert ES6 code to ES5 code