JavaScript is one of my favorite programming languages. It allows a person to develop a program relatively quick with a GUI. In most languages when you are learning you start with command line programs then move on to GUI programs. The learning curve for going from command line to GUI can be steep in some languages. With JavaScript, you start out with a GUI which is the web browser and all that is needed is to learn some HTML and CSS then concentrate on the JavaScript. Once you have learned Javascript well, you can then develop command line programs using nodejs or iojs.

Here is a list of books that have helped me learn and understand JavaScript. I placed them in a loose sequence from beginner to advance but there is some overlap between some of the books.

Eloquent JavaScript by Marijn Haverbeke
Amazon

JavaScript: The Good Parts by Douglas Crockford
Amazon

JavaScript Enlightenment by Cody Lindley
Amazon

Secrets of the JavaScript Ninja by John Resig, Bear Bibeault
Amazon

Principles of Object Oriented JavaScript by Nicholas C. Zakas
Amazon

JavaScript Patterns by Stoyan Stefanov
Amazon

Maintainable JavaScript by Nicholas C. Zakas
Amazon

High Performance JavaScript by Nicholas C. Zakas
Amazon

Async JavaScript by Trevor Burnham
Amazon