Introduction
In the first chapter, we covered many of the new and powerful features released in ES6. We discussed the evolution of JavaScript and highlighted the key additions in ES6. We discussed scope rules, variable declaration, arrow functions, template literals, enhanced object properties, destructuring assignment, classes and modules, transpiling, and iterators and generators.
In the second chapter, we covered JavaScript's asynchronous programming paradigm. We discussed the JavaScript event loop, callbacks, promises, and the async/await syntax.
In the third chapter, we learned about the Document Object Model (DOM), the JavaScript Event object, and the jQuery library.
In the fourth chapter, we discussed testing JavaScript code. We covered the reasons for testing and ways to go about adding tests to code. Then, we discussed different types of code tests and how they can be applied to your code base. Finally, we discussed various JavaScript code-testing frameworks and how tests can be...