Javascript 101
Tags: javascript, 100daysofcode, webdev, codenewbie
Published: 2020-05-14 19:09:57

This article is the part of a 5 article series named **'The Learning's 101'**. In this series I will be covering the topic and domains I explored during **#100DaysOfCode Challenge**. 

At the time of writing this article, I am at day 81 of the challenge and have decided to spend the next 20 days writing and revisiting the topics I have learned and discovered. So let's get started!

### **What is Javascript?**

If we go by the various definitions available on the internet and pick out a few of the keywords, we get the following :

***High-level*** - This means that in javascript we don't have to think about the low-level functionalities such as memory storage, type of processor, pointers, etc. 

***Dynamically-typed*** - One of the amazing things about JS. By being a dynamically-typed language, the thought of int, string, boolean, etc. are gone! The javascript interpreter assigns the type of the variable at the runtime based on the value of the variable. 

***First-class Function*** - JS is a programming language in which you can either assign a function as a variable, pass a function as an argument to another function, or can be returned by another function.

***Multi-paradigm*** - Javascript supports both object-oriented programming (OOPs) as well as functional programming. 

### **Superpower which Javascript brings along**

![Power Unleased](https://media.tenor.com/images/9f59ccc0ad6f76549fddcf38c9e0d1b0/tenor.gif)

When Javascript was introduced in the year 1994, it was a *client-side language* that used to run inside the browser and helped in making websites *interactive and dynamic*. Over the years, Javascript developed under the umbrella of ECMA, which in the initial phase used to bring irregular updates and it was not until 2015 when ECMAScript 6(or ES6) was launched and since then yearly updates were introduced!

**Today, there are hardly any websites that don't have their client-side powered by Javascript, with companies like *Facebook* and *Google* relying largely on the language**

Although Javascript slowly started gaining popularity as the client-side programming, it could only be run inside a browser. The big-break came in the year 2009 when a developer named **Rayn Dahl** decided to take **Google's V8 Javascript Engine** and place it inside a **C++ program**, giving us an environment which he called **Node to run Javascript code outside the browser**. 

Today, Node.js serves as one of the most used server-side development technologies in the world, bring more dynamism to JavaScript's client-side focused nature.

![Nodejs Unleased](https://thumbs.gfycat.com/FineZanyBison-size_restricted.gif)
**JAVASCRIPT ASSEMBLE!**

*So with Javascript running on both the client-side as well as server-side, we get added advantages such as code sharing and code maintenance, fewer technologies being involved, and uniformity across the codebase.*   


## **Important things to know in Javascript**

As a developer, who is still learning I might miss out on a few things but below are the list of topics that have helped me nurture my skills during this entire journey as a JS enthusiast. 

1. ***Document Object Model (DOM) Manipulation*** - If you deal with plain simple Javascript(Vanilla Javascript) or even when you move up to React.js(Javascript Frontend Library), DOM manipulation is one of the most important things which you should master. Dynamically changing or displaying content based on user input or action not only keeps your website user friendly but also adds a personal touch of customization.  

2. ***Use of functions*** -  If you have any prior programming knowledge, you will already know the importance of avoiding a repetitive task in your code. Declaring such code inside a function and calling that function whenever you want that task to be performed is a goto solution always.

3. ***ES6 and above*** - The knowledge about the latest features of Javascript is a must if you are planning to not just stop at Vanilla Javascript, and move ahead with Reactjs or Nodejs as both these frameworks depend highly on the new features such as promises, arrow function, async-await, etc.  

4.  ***Use of Modules*** - Modules can be considered to be the same as Classes in OOP. It is a collection of small units of reusable code that can be imported for building in a Javascript application. It can either be a user-defined module or built-in modules.
  
5. ***Asynchronous Javascript*** - The knowledge of handling function call asynchronously is a go-to skill for any developer nowadays. This is because you don't want your end users just to wait till you fetch data and block everything else, they expect some interaction even when there is a function executing in the background. 

6. ***Modern JS Concept*** - Two terms here, Webpack and Babel. You know what I will let you google this :D 



###**A sneak-peek at some cool resources**
 
* [freecodecamp](https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/basic-javascript/)

* [Udemy - The Complete JavaScript Course 2020: Build Real Projects!](https://www.udemy.com/course/the-complete-javascript-course/)

* [Youtube - JavaScript Crash Course For Beginners](https://www.youtube.com/watch?v=hdI2bqOjy3c)

* [The JavaScript Beginner's Handbook](https://flaviocopes.com/page/javascript-handbook/)


![The End](https://media.giphy.com/media/5IT69msgpaOcg/200.gif)