JavaScript.info (Built at July 10, 2019). — 700 p.
This book is a tutorial. It aims to help you gradually learn the language. But once you’re familiar with the basics, you’ll need other sources.
Here we learn JavaScript, starting from scratch and go on to advanced concepts like OOP.
We concentrate on the language itself here, with the minimum of environment-specific notes.
About the JavaScript language and the environment to develop with it.
An Introduction to JavaScript
Manuals and specifications
Code editors
Developer console
JavaScript Fundamentals
Hello, world!
Code structure
The modern mode, "use strict"
Variables
Data types
Type Conversions
Operators
Comparisons
Interaction: alert, prompt, confirm
Conditional operators: if, '?'
Logical operators
Loops: while and for
The "switch" statement
Functions
Function expressions and arrows
JavaScript specials
Code quality
Debugging in Chrome
Coding Style
Comments
Ninja code
Automated testing with mocha
Polyfills
Objects: the basics
Objects
Garbage collection
Symbol type
Object methods, "this"
Object to primitive conversion
Constructor, operator "new"
Data types
Methods of primitives
Numbers
Strings
Arrays
Array methods
Iterables
Map, Set, WeakMap and WeakSet
Object.keys, values, entries
Destructuring assignment
Date and time
JSON methods, toJSON
Advanced working with functions
Recursion and stack
Rest parameters and spread operator
Closure
The old "var"
Global object
Function object, NFE
The "new Function" syntax
Scheduling: setTimeout and setInterval
Decorators and forwarding, call/apply
Function binding
Currying and partials
Arrow functions revisited
Object properties configuration
Property flags and descriptors
Property getters and setters
Prototypes, inheritance
Prototypal inheritance
F.prototype
Native prototypes
Prototype methods, objects without __proto__
Classes
Class basic syntax
Class inheritance
Static properties and methods
Private and protected properties and methods
Extending built-in classes
Class checking: "instanceof"
Mixins
Error handling
Error handling, "try..catch"
Custom errors, extending Error
Promises, async/await
Introduction: callbacks
Promise
Promises chaining
Error handling with promises
Promise API
Promisification
Microtasks
Async/await
Generators, advanced iteration
Generators
Async iterators and generators
Modules
Modules, introduction
Export and Import
Dynamic imports
Miscellaneous
Proxy and Reflect
Eval: run a code string