### Javascript Resources While this list is primarily focused on learning React and Redux, and generally assumes that you understand the older Javascript ES5 standard, there's many great resources out there for learning Javascript. This page points to some similar resource lists that are focused on Javascript, as well as some additional useful articles and resources. #### General Resources - **Mozilla Developer Network: Javascript** https://developer.mozilla.org/en-US/docs/Web/JavaScript https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript Mozilla maintains a fantastic set of developer resources for Web technologies, including a comprehensive reference to the Javascript language and a number of associated tutorials. Their "reintroduction to Javascript" article is a great overview of what the language looks like. - **Modern JS Cheatsheet** https://github.com/mbeaudru/modern-js-cheatsheet An extensive list of explanations for syntax and concepts used in modern JS applications - **Eric Elliott's Javascript Resource Lists** https://medium.com/javascript-scene/10-priceless-resources-for-javascript-learners-bbf2f7d7f84e https://gist.github.com/ericelliott/d576f72441fc1b27dace/0cee592f8f8b7eae39c4b3851ae92b00463b67b9 Eric Elliott is a strong proponent of Javascript, has written numerous articles about learning and understanding Javascript, and assembled some very useful lists of numerous Javascript resources. (Note that he is very strongly opinionated in his own articles, particularly about certain code patterns that he feels everyone should follow, but overall his advice and information is pretty solid.) - **Wes Bos's Javascript Resource List** http://wesbos.com/learn-javascript Speaker and teacher Wes Bos gives links to a number of resources for learning Javascript - **Learning Javascript and the Danger of Spreading Yourself Too Thin** https://medium.com/@kevininaniche/learning-javascript-and-the-danger-of-spreading-yourself-too-thin-4617384e7ea4 Tips on how to approach learning Javascript, and some additional resources. - **Reddit /r/LearnJavascript** https://www.reddit.com/r/LearnJavascript A Reddit community for learning Javascript - **Roadmap for Learning the Javascript Language** http://bytearcher.com/articles/roadmap-for-learning-javascript-language/ A suggested approach for how to learn Javascript. - **Zero to One: How I Mastered Javascript and You Can Too** https://hashnode.com/post/zero-to-one-how-i-mastered-javascript-and-how-you-can-too-ciuwmrw9j00r50q539clhhdj7 An article describing how one person approached learning Javascript, with suggestions and advice to follow. - **Want to Learn Javascript in 2016?** https://medium.com/@_cmdv_/i-want-to-learn-javascript-in-2015-e96cd85ad225 Extensive suggestions for resources to use when learning Javascript - **6 Quick & Proven Tips to Help You Learn JavaScript** https://blog.alexdevero.com/6-quick-proven-tips-learn-javascript/ Points to a couple of suggested books to help learn JS, and gives several additional suggestions for approaches and resources to use in the process. - **Array iteration methods summarized** https://gist.github.com/ljharb/58faf1cfcb4e6808f74aae4ef7944cff An explanation of all the different Array methods that loop over the array, what they do, and when they should be used #### Tutorials, Books, and Courses - **Eloquent Javascript** http://eloquentjavascript.net/ A full online book teaching Javascript from the ground up. Very recommended. - **You Don't Know Javascript** https://github.com/getify/You-Dont-Know-JS An online book series intended to teach all aspects of Javascript, including the "tougher" parts. - **Exploring Javascript** http://exploringjs.com/ Multiple free online books from Dr. Axel Rauschmayer. "Speaking Javascript" covers all of Javascript through ES5; "Exploring ES6" covers ES6 in depth; and other books look at versions of Javascript after ES6 and how to set up an ES6+ development environment. - **The Modern Javascript Tutorial** http://javascript.info/ A large tutorial series that covers all aspects of the modern Javascript language (basic syntax, data types, objects, and advanced function usage), as well as a section on using Javascript to interact with the DOM in web pages. - **Rithm School Free Javascript Course** https://www.rithmschool.com/courses - **Practical Javascript** http://watchandcode.com/p/practical-javascript A free online course to learn Javascript fundamentals. - **Javascript Path** https://github.com/javascript-society/javascript-path A list of books to master JavaScript Development - **DOM Enlightenment** http://domenlightenment.com/ A deep look at how to interact with the DOM from Javascript, without using a library or a framework. - **Javascript30** https://javascript30.com/ A free course from Wes Bos that teaches how to build 30 different interesting projects, using only "vanilla" Javascript. - **Javascript; The Core** http://dmitrysoshnikov.com/ecmascript/javascript-the-core-2nd-edition/ A dive into core concepts of how Javascript objects behave: prototypes, constructors, scopes, closures, and `this`. The second edition includes more of a focus on ES6 and newer features. - **The JavaScript Way** https://github.com/bpesquet/thejsway A modern introduction to the JavaScript language, intended to be beginner-friendly, comprehensive, standards-aligned with the latest syntax and good practices, and hands-on. #### Online Code Editors - **CodeSandbox** https://codesandbox.io A full-fledged online IDE that lets you build entire applications using React, Vue, and other toolkits. - **A Roundup of Online Code Playgrounds** https://www.sitepoint.com/round-up-online-code-playgrounds/ An overview and comparison of various online Javascript live code editing tools. #### Articles and Gotchas - **Mozilla Javascript Reference: the `this` keyword** https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this MDN's usual excellent documentation, explaining how `this` works in Javascript - **Gentle Explanation of `this` keyword in Javascript** https://dmitripavlutin.com/gentle-explanation-of-this-in-javascript/ https://www.reddit.com/r/javascript/comments/4o1546/gentle_explanation_of_this_keyword_in_javascript/ Another long and in-depth explanation, plus some good discussion in the Reddit comments. - **The Inner Workings of Javascript's `this` keyword** https://www.sitepoint.com/inner-workings-javascripts-this-keyword/ https://www.sitepoint.com/mastering-javascripts-this-keyword/ A two-part article on the ins and outs of `this`. - **Let's Settle `this`, Part One** https://medium.com/@nashvail/lets-settle-this-part-one-ef36471c7d97 Another look at `this`, with a number of examples and explanations - **Understanding Javascript Function Invocation and `this`** http://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/ An excellent explanation of how function calls and the `this` keyword work - **When 'not' to use arrow functions** https://dmitripavlutin.com/when-not-to-use-arrow-functions-in-javascript/ An in-depth look at when you should stick with standard JS functions instead of arrow functions - **Do ES6 Arrow Functions Really Solve "this" in Javascript?** https://derickbailey.com/2015/09/28/do-es6-arrow-functions-really-solve-this-in-javascript/ A dive into how `this` works inside of arrow functions, and some places when they may not be appropriate for use. - **Grokking Scope in Javascript** https://code.tutsplus.com/tutorials/grokking-scope-in-javascript--cms-26259 Advice for understanding how Javascript variable coping works - **Let It Be - How to declare JavaScript variables** http://madhatted.com/2016/1/25/let-it-be https://www.reddit.com/r/javascript/comments/44yjzo/let_it_be_how_to_declare_javascript_variables/ A look at how `var`, `let`, and `const` behave, and how using them communicates intent. Further discussion in the Reddit comments. - **This in Javascript** https://zellwk.com/blog/this/ Tries to demystify the behavior of the `this` keyword by explaining the six situations that can change the value of `this`. - **Which Array Function When?** https://dev.to/andrew565/which-array-function-when A great explanation of the differences between the various methods that can loop over arrays (`map`, `filter`, `reduce`, and `forEach`), and when you should use each one. - **What is This in Javascript?** https://developer.telerik.com/topics/web-development/what-is-this-in-javascript/ An easy-to-read explanation of the different ways `this` can be defined in a function. - **Everything you wanted to know about JavaScript scope** https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/ A detailed look at the concept of "scopes" in JS, including global, local, function, and lexical scopes, and how `this` behaves in relation to scopes. - **On `this` in Javascript** http://georgemauer.net/2017/08/03/on-this-in-javascript.html Describes how `this` is just a function parameter you don't get to name, and shows how it works with normal functions, arrow functions, and classes #### Paid Courses and Books - **Javascript: Understanding the Weird Parts** https://www.udemy.com/understand-javascript/?couponCode=YOUTUBE19 https://www.youtube.com/watch?v=Bv_5Zv5c-Ts http://joanmira.com/javascript-understanding-the-weird-parts/ A widely recommended course on Javascript by Tony Alicea. The first 3.5-hour video is free on Youtube, with a discount link for the course. The last link is notes from the course.