The last 4 years has seen Javascript hotness like never before. You have a language that is native to the web browser, and up until just recently didn't really thrive anywhere else. At present we see Javascript or variants of it like Nativescript popping up on devices running it where you would normally see another language (like C++, Python, Swift, Java). Javascript is in the middle of the biggest boom of its existence. The past 4 years have seen so many frameworks being built and widely accepted - more than any other programming language. So why? Why is so much effort going into a browser based language that is interpreted, non-typed, and so webcentric?
Being interpreted and non-typed makes Javascript fast to develop in. Another great feature is its focus of first class functions, which can make reading Javascript tricky and confusing. That said Javascript has many proven design patterns that can solve tough development issues (AMD / Singelton etc). There has been a huge focus on functional programming recently which allows for modular development that is perfect for test driven development (TDD). It makes it easy to test each part of the program in a way that might not be as easy with other development strategies.
The popularity of Node has allowed users to view Javascript as a more utilitarian language outside of the browser. The use of Javascript as a serverside language in Node makes the possibility of knowing only one language across the stack a reality (maybe not all the way, but it still adds a level of appeal). Additionally Nativescript takes Javascript and allows a developer to create a native looking IOS or Android app with Javascript. The fact is that Javascript is being run outside the browser and that is exciting and means more opportunity to use it - this means more people investing time honing their JS skills.
Jquery is just so successful. It almost single handedly standardized Javascript across all browsers. Developers can manipulate the DOM without worrying about old browsers or cross browser compatibility. Since Jquery was so successful it only made sense for other open source developers to start cranking out other frameworks to answer other common problems. This excitement has lead to some of the fastest and most robust framework development ever seen around a language. Angular, React, Knockout, Ember and more.
Probably the biggest reason Javascript is popular is because of the popular decision to shift computing to the client and to leave the servers to handle service calls only. Basically just let the server handle downloads, uploads and database and let the client handle all of the processing and manipulation.
There has also been a trend to have native app like experiences on the web, which means that you have a view that doesn't change except through asynchronous calls to the services side. Views update in real-time and don't require page refreshes like it did in the past.
Data serialization is the process of storing data in a way that is free from any design elements and JSON or the Javascript Object Notation is light, fast and super popular. Services export to JSON and Javascript can chew through it easily. Even though Javascript isn't Object orient in a traditional sense, everything is an object in Javascript. Programming in Javascript basically means getting comfortable with Javascript objects - which also means getting used to dealing objects that look like JSON. JSON is a favorite for most APIs and web-services stealing much of the limelight that XML used to hold. Even though
Github solved a problem by creating a remote repository for your code. It also made shareing code easy and created a community at the same time. Github created an environment that allowed Javascript Frameworks and projects take off and also gain valuable feedback from users. NPM or node package manager is the package manager for javascript - which means that if you are developing a project, and you want to give your project some functionality, chances is are a package can already do that job and all it takes to put it in your project is a command or two. Grunt and Gulp all automate builds and dependencies... all in all you have an ecosystem that is vibrant and alive and at times overwhelming, but the common thread still remains Javascript.