This is not actually a single book but a series.
“Typecasting using the bitwise unsigned right shift operator converts a double into an unsigned 32-bit integer, deoptimizing the V8 engine”.
These six books read in the proper order will make you understand almost everything about JS.
Addy does a great job of introducing a variety of design patterns and provides nice examples for each.
Not only it’s a good textbook, it also serves as a reference book. I’ve looked up code snippets in the book for a couple of times after I finished reading. Besides explaining how and when to use the new ES6 features, it also provides a look at how these features are implemented at high level.
It introduces ES6 (and beyond) language features in a friendly, approachable way. The treatment is neither too deep, nor too shallow; the author has found an ideal middle ground. Especially nice was the fact that no language features were skewed or treated unfairly, or incompletely in service to idiosyncratic opinions the author may have.
This title especially stands out for its treatment of in-progress features like class instance fields, decorators (yes, the updated stage 2 version), and async iterators.