I have been working with JavaScript for couple of years now, but only got to fully understand how JavaScript works when I read "You don't know JS" series by Kyle Simpson. In there you will find detail explanation on scope, this binding, prototype, async JS, performance, types and ES6. Although I admit that Kyle has some thoughts on his own on some of JavaScript features, this series gave me ability to fully understand and work with JavaScript in any environment, client, server and hybrid. Can't recommend it more!