<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yash K</title>
    <description>The latest articles on DEV Community by Yash K (@meetwithyash).</description>
    <link>https://dev.to/meetwithyash</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F299110%2Fa2cde78b-012c-41c3-9ea7-0a171bbf5d62.png</url>
      <title>DEV Community: Yash K</title>
      <link>https://dev.to/meetwithyash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meetwithyash"/>
    <language>en</language>
    <item>
      <title>Top JavaScript New Features for 2020!</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Sat, 08 Feb 2020 04:05:21 +0000</pubDate>
      <link>https://dev.to/meetwithyash/top-javascript-2020-features-5h7d</link>
      <guid>https://dev.to/meetwithyash/top-javascript-2020-features-5h7d</guid>
      <description>&lt;p&gt;If you are a JavaScript developer then you might probably know that ECMAScript 2020 just released. Hence, that also brings exciting Features to JavaScript as well. I want to just make you aware of some of the features that may help you a lot in your future projects!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Optional Chaining:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;testing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;key1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;value1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;testing&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;key2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//throws error if the key is not defined&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;testing&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;key2&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//gives undefined if the key is not defined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By looking above example, you might already understand the power of the Optional Chaining. It is just not adding syntactic sugar to the code but also gives you the power to check for the key right away. Before this, we used to use &lt;em&gt;hasOwnProperty()&lt;/em&gt; for checking the existence of the key for avoiding errors. This is definitely one of the great features introduced in JavaScript 2020.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Promise.allSettled():&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promise1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;promise2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;allSettled&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nx"&gt;promise1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;promise2&lt;/span&gt;&lt;span class="p"&gt;]).&lt;/span&gt;
  &lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;results&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i0gDJm60--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mmeutb7tbg0siyy1qla0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i0gDJm60--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mmeutb7tbg0siyy1qla0.png" alt="Output" width="479" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Promise.allSettled()&lt;/em&gt; is newly introduced method in JavaScript 2020. JavaScript already has one method similar to this that is &lt;em&gt;Promise.all()&lt;/em&gt;. But there is a slight difference between the working of both methods. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Promise.all():&lt;/em&gt; If one of the promises fails, then all the rest of the promises fail. Then &lt;em&gt;Promise.all()&lt;/em&gt; gets rejected.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Promise.allSettled():&lt;/em&gt; It returns the status of all promises &lt;em&gt;after all, promises fulfilled&lt;/em&gt; despite each promise resolved or rejected.&lt;/p&gt;

&lt;p&gt;You can make it clear by looking at the above example and its output. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Dynamic Import:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;async function doSomething(){
   const lib = await import('heavylib');

   //do something with *lib*
}

doSomething();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dynamic import allows us to load external libraries/modules when we need. Before, we used to load libraries/modules at the top despite the fact that all modules are not required right away. Some required to have later in the program. &lt;/p&gt;

&lt;p&gt;The main benefit of this method is we can reduce the website loading time. And that's what most of the website owners want to have. It can be a useful tool when &lt;em&gt;performance&lt;/em&gt; is the main goal in your project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4) Nullish Coalescing Operator:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;//10 &lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 0&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is one of my favorite features introduced in JavaScript 2020. It helps when we want to validate data existence. &lt;/p&gt;

&lt;p&gt;Suppose, I want to check if the particular variable has no value then I want to assign it pre-defined value. We can achieve the same thing by &lt;em&gt;Logical OR&lt;/em&gt; operator but there is one problem that it considered &lt;em&gt;zero&lt;/em&gt; as a falsy value whereas &lt;em&gt;zero&lt;/em&gt; can be a valid value. Actually, that's the problem solved by this new operator. It considers only &lt;em&gt;null&lt;/em&gt; and &lt;em&gt;undefined&lt;/em&gt; as falsy value whereas &lt;em&gt;zero&lt;/em&gt; considers as a valid value.&lt;/p&gt;

&lt;p&gt;Here ends, I want to let you know that that's not all. I have highlighted the features that I think will help you in future projects!&lt;/p&gt;

&lt;p&gt;I hope you liked it and let me know your thought on this topic by commenting down below.&lt;/p&gt;

&lt;p&gt;Follow me on twitter: &lt;a href="https://twitter.com/ykhokhaneshiya"&gt;https://twitter.com/ykhokhaneshiya&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JavaScript Arrow Functions</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Mon, 13 Jan 2020 15:16:57 +0000</pubDate>
      <link>https://dev.to/meetwithyash/javascript-arrow-functions-nah</link>
      <guid>https://dev.to/meetwithyash/javascript-arrow-functions-nah</guid>
      <description>&lt;p&gt;You might not familiar with this newer syntax of defining functions in JavaScript. It just not adds up syntactic sugar in code but it also comes with a default behavior that differs from old JavaScript functions in the context of &lt;em&gt;this&lt;/em&gt; keyword. Don't worry, we will make it clear together!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Arrow Functions&lt;/em&gt; were introduced in ES6. &lt;/p&gt;

&lt;p&gt;Let's look at the syntax of Arrow Functions first:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--muGsWWky--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dbdmi29jacck5tdut638.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--muGsWWky--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/dbdmi29jacck5tdut638.png" alt="first-example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KhDhf4z6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ekmqhj18usky9conu4ao.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KhDhf4z6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ekmqhj18usky9conu4ao.png" alt="first-example-output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, I have defined two functions with old syntax as well with new arrow syntax. And you can see in the output, Arrow Function would not make any difference. It would work same as the old function and product output. &lt;/p&gt;

&lt;p&gt;Also, I have demonstrated one-line syntax of arrow function and arrow function with parameters in the below example.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1xCZ4Vcs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/a1ypdeqjy6iw8c8ys2d5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1xCZ4Vcs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/a1ypdeqjy6iw8c8ys2d5.png" alt="second-example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's look at the behavior of arrow function with respect to &lt;em&gt;this&lt;/em&gt; keyword.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_qG6fBVj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uzppfxc3urx7ba9vzx97.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_qG6fBVj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/uzppfxc3urx7ba9vzx97.png" alt="this-keyword"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d02tPGV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3dpetdzytwu31sjyl6oj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d02tPGV---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/3dpetdzytwu31sjyl6oj.png" alt="this-keyword-output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, I have defined two constructor functions with regular function and arrow function within it. And, if you look at the output then, it might look confusing. How this output is produced? Let me clarify. &lt;/p&gt;

&lt;p&gt;Until arrow functions, every new function defined its own &lt;em&gt;this&lt;/em&gt; value. This proved to be less than ideal with an object-oriented style of programming. And, it can be verified by looking at the output of the &lt;em&gt;p1&lt;/em&gt; object. In that, &lt;em&gt;this&lt;/em&gt; &lt;br&gt;
not refers to &lt;em&gt;Person1&lt;/em&gt; object instead refers to &lt;em&gt;window&lt;/em&gt; object. In this case, age would not be updated correctly.&lt;/p&gt;

&lt;p&gt;On the other hand, An arrow function does not have its own &lt;em&gt;this&lt;/em&gt;. Now, if you look at the &lt;em&gt;person2&lt;/em&gt; object which contains an arrow function within it. And, the output also proves that an arrow function does not have own &lt;em&gt;this&lt;/em&gt; instead refers to &lt;em&gt;parent2&lt;/em&gt; object. thus, it would update the age correctly.&lt;/p&gt;

&lt;p&gt;When to use an arrow function?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In my opinion, it shortens the syntax and code looks cleaner. But you need to be careful when you are messing with &lt;em&gt;this&lt;/em&gt; in case of constructor function or class. It can leads to unexpected output sometimes. I personally prefer using an arrow function syntax over old syntax.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you liked it and let me know your thought on this topic by commenting down below.&lt;/p&gt;

&lt;p&gt;Follow me on twitter: &lt;a href="https://twitter.com/ykhokhaneshiya"&gt;https://twitter.com/ykhokhaneshiya&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JavaScript == vs ===, Which one you should use?</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Fri, 10 Jan 2020 04:12:39 +0000</pubDate>
      <link>https://dev.to/meetwithyash/javascript-vs-which-one-you-should-use-2cn5</link>
      <guid>https://dev.to/meetwithyash/javascript-vs-which-one-you-should-use-2cn5</guid>
      <description>&lt;p&gt;This tutorial is only for beginners in JavaScript. If you have a little bit of experience with JavaScript then you might be familiar with this. Otherwise, bear with me I will help you to make this clear.&lt;/p&gt;

&lt;p&gt;If you know any other programming language then it would probably sound confused with these two operators. As most of the other programming languages have only one &lt;em&gt;==&lt;/em&gt; comparison operator. But JavaScript gives us great control over conditions by these two keywords. It would be clear as we go through an example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e5LdOlCb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/331bs2m2er1riokot8ps.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e5LdOlCb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/331bs2m2er1riokot8ps.jpg" alt="== vs === example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--af1n-eBE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5tcvmx7rcp31r7cojynm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--af1n-eBE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/5tcvmx7rcp31r7cojynm.jpg" alt="output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I think the above example would be enough to clear this difference.&lt;/p&gt;

&lt;p&gt;As you can see, I have defined two variables &lt;em&gt;num1&lt;/em&gt; and &lt;em&gt;num2&lt;/em&gt; but note that &lt;em&gt;num1&lt;/em&gt; is assigned with "1" (String) and &lt;em&gt;num2&lt;/em&gt; is assigned with 1 (Number). &lt;/p&gt;

&lt;p&gt;Then, I have put log statements with those operators. And you can see in the output that &lt;em&gt;==&lt;/em&gt; operator gives &lt;em&gt;true&lt;/em&gt; and &lt;em&gt;===&lt;/em&gt; operator gives &lt;em&gt;false&lt;/em&gt; as output.&lt;/p&gt;

&lt;p&gt;Let me explain why this output produced because, &lt;em&gt;==&lt;/em&gt; operator always compares values of given operands. It will not check the types of the given operands. Whereas, &lt;em&gt;===&lt;/em&gt; operator always compares values plus type of the given operands. Here in our example &lt;em&gt;"1"&lt;/em&gt; and &lt;em&gt;1&lt;/em&gt;, both are equals in terms of values but they are of different types.&lt;/p&gt;

&lt;p&gt;Which one should you use?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The answer can be varied from different perspectives. In my opinion, if you can you should use &lt;em&gt;===&lt;/em&gt; operator. Because it will give you more control then &lt;em&gt;==&lt;/em&gt; operator.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you liked it and let me know your thought on this topic by commenting down below.&lt;/p&gt;

&lt;p&gt;Follow me on twitter: &lt;a href="https://twitter.com/ykhokhaneshiya"&gt;https://twitter.com/ykhokhaneshiya&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>JavaScript Primitive vs Reference types</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Sun, 05 Jan 2020 06:53:37 +0000</pubDate>
      <link>https://dev.to/meetwithyash/javascript-primitive-vs-reference-types-43dl</link>
      <guid>https://dev.to/meetwithyash/javascript-primitive-vs-reference-types-43dl</guid>
      <description>&lt;p&gt;JavaScript has two data types: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primitive types&lt;/li&gt;
&lt;li&gt;Reference types&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1) Primitive types&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It consists of &lt;em&gt;Number&lt;/em&gt;, &lt;em&gt;String&lt;/em&gt;, &lt;em&gt;Boolean&lt;/em&gt;, &lt;em&gt;null&lt;/em&gt;, and &lt;em&gt;undefined&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;If we assign a primitive type to a variable, we can think of it as we putting that particular value in a particular memory box.&lt;/li&gt;
&lt;li&gt;When we assign a value of one variable to another it will be copied into that new variable. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let me make it more clear for you by an example: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AXOtjb2v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/y59prr693im7sqh2p188.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AXOtjb2v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/y59prr693im7sqh2p188.jpg" alt="Primitive types example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look at an above simple example, There I have defined &lt;em&gt;name&lt;/em&gt; variable by assigning &lt;em&gt;String&lt;/em&gt; primitive type. In order to demonstrate the above-stated points about primitive types, I have created the second variable with name &lt;em&gt;anotherName&lt;/em&gt; and copied the value of the &lt;em&gt;name&lt;/em&gt; variable into it. Then, I changed the value of &lt;em&gt;anotherName&lt;/em&gt; variable to something else. Then, I have printed both variables. &lt;/p&gt;

&lt;p&gt;As you can clearly see, Both values are different that clearly proves that values are copied in the case of Primitive types.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Reference types&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now you can probably guess about Reference types. It consists of &lt;em&gt;Array&lt;/em&gt;, &lt;em&gt;Object&lt;/em&gt;, and &lt;em&gt;Function&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;In the case of Reference types Variables actually don't have the actual values but it contains a reference to that particular value.&lt;/li&gt;
&lt;li&gt;Here, Reference simply means a pointer to another memory location that holds particular value. This might be sound confusing for you at first glance but bear with me. Once you go through it would be very clear to you.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aMJ7pUlt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ewqorhhqk7iapelxmv96.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aMJ7pUlt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ewqorhhqk7iapelxmv96.jpg" alt="Reference types example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, I have used an array to demonstrate the working of Reference types in JavaScript. First, I have defined &lt;em&gt;arr1&lt;/em&gt; with three elements in it. Then, I have defined &lt;em&gt;arr2&lt;/em&gt; by copying &lt;em&gt;arr1&lt;/em&gt; into it. Now, let me reveal the magic by changing one of the elements in &lt;em&gt;arr2&lt;/em&gt;. And then, I have printed both arrays and surprise, both are having that updated value though I have not touched the &lt;em&gt;arr1&lt;/em&gt;.   &lt;/p&gt;

&lt;p&gt;This result produced because of the default behavior of Reference types in JavaScript. As I stated above that Reference types are not copying the actual values rather they are just keeping the reference to that particular value in the memory. &lt;/p&gt;

&lt;p&gt;You might have a question that Why Reference types created although we could simply just copy the values: &lt;br&gt;
Answer: It is not always optimal to just copy the values when we are assigning value to a variable. Because copying the values would cost large overhead as it needs to allocate a new memory block and copies the values from that location to this newly allocated memory location. It would be easy in the case of &lt;em&gt;Primitive types&lt;/em&gt; as it would not contain many values as arrays or objects. &lt;/p&gt;

&lt;p&gt;So this behavior is implemented to save time and memory both. :)&lt;/p&gt;

&lt;p&gt;Here ends the topic, primitive types vs reference types. Sometimes developers might think that this is not an important topic. But It always makes you technically sound developer as you know the fundamentals of the particular language.&lt;/p&gt;

&lt;p&gt;I hope you liked it and let me know your thought on this topic by commenting down below.&lt;/p&gt;

&lt;p&gt;Follow me on twitter: &lt;a href="https://twitter.com/ykhokhaneshiya"&gt;https://twitter.com/ykhokhaneshiya&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>JavaScript Hoisting for beginners</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Fri, 03 Jan 2020 07:17:02 +0000</pubDate>
      <link>https://dev.to/meetwithyash/javascript-hoisting-for-beginners-3hli</link>
      <guid>https://dev.to/meetwithyash/javascript-hoisting-for-beginners-3hli</guid>
      <description>&lt;p&gt;Hoisting might be difficult for you to understand as a JavaScript beginner. Let me simplify that for you!&lt;/p&gt;

&lt;p&gt;In simple words, Hoisting is the default behavior of JavaScript of moving variables &lt;em&gt;declarations&lt;/em&gt; at the top of script or function.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; JavaScript only hoists the variable declarations at the top, not the initialized variables. It will be clear once we go through examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; JavaScript hoisting only works with variables declared with &lt;em&gt;var&lt;/em&gt; keyword not &lt;em&gt;let/const&lt;/em&gt; keywords.&lt;/p&gt;

&lt;p&gt;Let's make it clear by examples.&lt;/p&gt;

&lt;p&gt;1) Hoisting of variable declarations:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tVEma9iG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bouwndsd0j0c9r67hxam.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tVEma9iG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/bouwndsd0j0c9r67hxam.jpg" alt="Example 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LOIvcW4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8kcbnrb8x6x7o4oktj3n.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LOIvcW4r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/8kcbnrb8x6x7o4oktj3n.jpg" alt="Output 1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look at the above example, the output produced because JavaScript hoists the variable declaration at line 16 to the top of the script. So if you try by putting that declaration of line 16 to line 11, it will produce the same output.&lt;/p&gt;

&lt;p&gt;2) Hoisting of variable initializations:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5_FqC6k3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mb3qpam5kia5gdms9e92.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5_FqC6k3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/mb3qpam5kia5gdms9e92.jpg" alt="Example 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--13OuwPF6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/x3f4szkrdq09moc2mmu4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--13OuwPF6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/x3f4szkrdq09moc2mmu4.jpg" alt="Output 2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As stated in the above note, JavaScript will not hoist variable initializations. So in the output, it gives undefined at line 12 because at line 14 I have initialized variable &lt;em&gt;x&lt;/em&gt; with value &lt;em&gt;5&lt;/em&gt; not just declared. &lt;/p&gt;

&lt;p&gt;you might have a question that why &lt;em&gt;x&lt;/em&gt; is &lt;em&gt;undefined&lt;/em&gt; instead of giving me an error. look at the below snippet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H6yrjct4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lwc8wxg1gdynmpu9t12b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H6yrjct4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/lwc8wxg1gdynmpu9t12b.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Behind the scene, JavaScript will make the code like the above snippet by hoisting declaration of variable x. That's why it will give the value of &lt;em&gt;x&lt;/em&gt; &lt;em&gt;undefined&lt;/em&gt; instead of an error. &lt;/p&gt;

&lt;p&gt;Now I hope, that note makes sense that JavaScript only hoists declarations not the initializations of variables.&lt;/p&gt;

&lt;p&gt;Hoisting is the default behavior that might cause unexpected results. And it would be very hard to find this kind of problem. So to avoid this follow below rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Always use new ways of declaring and initializing variables using &lt;em&gt;let/const&lt;/em&gt; keywords.&lt;/li&gt;
&lt;li&gt;Always declare variables at the top of scope (Global or Function or block Scopes).&lt;/li&gt;
&lt;li&gt;If you really want to use &lt;em&gt;var&lt;/em&gt; keyword enable &lt;em&gt;strict mode&lt;/em&gt; in the script. You can refer to this article about &lt;em&gt;strict mode&lt;/em&gt; in JavaScript: &lt;a href="https://www.w3schools.com/js/js_strict.asp"&gt;https://www.w3schools.com/js/js_strict.asp&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here Ends, I hope Hoisting makes sense to you. Also, comment down below your thoughts on it. &lt;/p&gt;

&lt;p&gt;Good Luck!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>JavaScript var vs let. Which one should you use?</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Thu, 02 Jan 2020 06:07:12 +0000</pubDate>
      <link>https://dev.to/meetwithyash/javascript-var-vs-let-which-one-should-you-use-ill</link>
      <guid>https://dev.to/meetwithyash/javascript-var-vs-let-which-one-should-you-use-ill</guid>
      <description>&lt;p&gt;If you are a JavaScript developer you would probably know about var and let. But those who are not familiar with it let me introduce it to you.&lt;/p&gt;

&lt;p&gt;Before ES2015 in JavaScript, you have to use &lt;em&gt;var&lt;/em&gt; keyword in order to declare/define variables. But in ECMAScript 2015 two new keywords introduced those are &lt;em&gt;let&lt;/em&gt; and &lt;em&gt;const&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Before ES2015, JavaScript had only two types of scope: &lt;em&gt;Global Scope&lt;/em&gt; and &lt;em&gt;Function Scope&lt;/em&gt;. After ES2015, those two keywords support of &lt;em&gt;Block Scope&lt;/em&gt;. You probably arise a question about what do you mean by this scopes.&lt;/p&gt;

&lt;p&gt;Let me tell you about the scope first: In simple words, the Scope of variable means in which block of code it would be available to use.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Global Scope:&lt;/em&gt; Variables declared Globally (outside any function) have Global Scope. Global variables can be accessed from anywhere in a JavaScript program.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Function Scope:&lt;/em&gt; Variables declared within any function would be bound to that particular function and have Function Scope. It would not be available outside of that function.   &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Block Scope:&lt;/em&gt; Variables declared inside a block {} can not be accessed from outside the block. With &lt;em&gt;var&lt;/em&gt; keyword can not have Block Scope. It would be also available outside of that block. But if you declare variable with &lt;em&gt;let&lt;/em&gt; or &lt;em&gt;const&lt;/em&gt; keyword it would not be accessible outside of that particular block.&lt;/p&gt;

&lt;p&gt;Let me give you some examples so that it would be clear to you:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) Using &lt;em&gt;var&lt;/em&gt; keyword&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fuxzev7tbsv9db8yvl4d2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fuxzev7tbsv9db8yvl4d2.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have prepared a small function test to demonstrate to you the behavior of &lt;em&gt;var&lt;/em&gt; keyword in JavaScript. Please, take a look at the above snippet and think about the output of the program.&lt;/p&gt;

&lt;p&gt;Output: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9fd8yoaphehv26bg7ydp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F9fd8yoaphehv26bg7ydp.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, let me tell you what is going on in this example and how this output is produced.&lt;/p&gt;

&lt;p&gt;As stated before, &lt;em&gt;var&lt;/em&gt; does understand the function and global scopes and doesn't understand block scope.&lt;/p&gt;

&lt;p&gt;I have defined the name variable globally and variable inside of function test with the same name. &lt;/p&gt;

&lt;p&gt;So at line 26, it refers to the global name variable. &lt;/p&gt;

&lt;p&gt;Now if you refer the name variable inside the function test then it would point to the global variable if the local variable does not exist with that particular name. &lt;/p&gt;

&lt;p&gt;But in the above example, I have declared name inside the function so if I refer the name inside the function it would give me the value of that local variable. &lt;/p&gt;

&lt;p&gt;In the function, I have also used block and again defined name variable at line 18. But that would overwrite existed name variable because &lt;em&gt;var&lt;/em&gt; doesn't understand block scope. so it produced that output of the console statement at line 21.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Using &lt;em&gt;let&lt;/em&gt; keyword&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now let try the same program but by using the let keyword instead of the var keyword.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvtj1e442om1hnoyjh8xb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvtj1e442om1hnoyjh8xb.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now think about output based on above all rules.&lt;/p&gt;

&lt;p&gt;Output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsa2omyabv4r9qbyggq8v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fsa2omyabv4r9qbyggq8v.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now I hope it would be totally clear by just seeing the above output. &lt;/p&gt;

&lt;p&gt;If you use &lt;em&gt;let&lt;/em&gt; keyword then you variable would be bound to global, function or block scope, not just global and function scope.&lt;/p&gt;

&lt;p&gt;So at line 26, it refers to the global name variable. &lt;/p&gt;

&lt;p&gt;But at line 21, it would not be overwritten by that block variable, and still refers to that name variable defined at line 15. And variable defined at line 18, would be only available inside that particular block and not outside of that block.&lt;/p&gt;

&lt;p&gt;You can also refer to this great article about &lt;em&gt;let&lt;/em&gt; keyword:&lt;br&gt;
&lt;a href="https://www.w3schools.com/js/js_let.asp" rel="noopener noreferrer"&gt;https://www.w3schools.com/js/js_let.asp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which one should you use?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After comparing var and let, I highly recommend you to use &lt;em&gt;let&lt;/em&gt; instead of &lt;em&gt;var&lt;/em&gt; unless you have a strong reason to use &lt;em&gt;var&lt;/em&gt; keyword. Because using &lt;em&gt;var&lt;/em&gt;, it may produce unexpected output and it would be hard to find errors in large programs. It would be a headache sometimes. While using &lt;em&gt;let&lt;/em&gt;, you do not need to mess with the scopes. It would not lead to unexpected outputs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope now it would be very clear to you why you should use &lt;em&gt;let&lt;/em&gt; and how it works.&lt;/p&gt;

&lt;p&gt;Please comment down below your thoughts about it. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>node</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Top 3 Courses to Learn NodeJS in 2020</title>
      <dc:creator>Yash K</dc:creator>
      <pubDate>Tue, 31 Dec 2019 12:20:17 +0000</pubDate>
      <link>https://dev.to/meetwithyash/top-3-courses-to-learn-nodejs-in-2020-50ek</link>
      <guid>https://dev.to/meetwithyash/top-3-courses-to-learn-nodejs-in-2020-50ek</guid>
      <description>&lt;p&gt;Hi, I wish you a happy new year. I hope you will have a great year ahead. If you want to become a &lt;strong&gt;Backend developer&lt;/strong&gt; in 2020, then NodeJS would be a great choice as it is dominating the space of backend development currently.&lt;/p&gt;

&lt;p&gt;Let me first talk about why you should be a backend developer. Backend is essential in any kind of application like a web app, mobile app, desktop app, etc. As you can see everything needs to have backend for maintaining so many things under the hood. So I think, it is a great choice to become a Backend developer.&lt;/p&gt;

&lt;p&gt;You can become a Backend developer by learning other technologies like PHP, Python(Django), Ruby(Ruby on Rails). But there are many advantages of NodeJS over these technologies. I will not go into details as it is not for that. Probably a topic for another post! &lt;/p&gt;

&lt;p&gt;Now, let me walk you through the courses for becoming a very sound NodeJS developer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1) NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yc1olq-m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b0udjtf96k86uqfxkqa0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yc1olq-m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/b0udjtf96k86uqfxkqa0.jpg" alt="NodeJS - The Complete Guide (incl. MVC, REST APIs, GraphQL)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This course is designed by an amazing teacher and experience web developer Maximilian Schwarzmüller. He is one of my favorite teacher. I highly suggest that you should definitely start with this course. This course is packed with great content that starts from level zero to more advanced topics. I personally learned NodeJS by following this course.&lt;/p&gt;

&lt;p&gt;You can go to the course by the following link:&lt;br&gt;
&lt;a href="https://www.udemy.com/course/nodejs-the-complete-guide/"&gt;https://www.udemy.com/course/nodejs-the-complete-guide/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2) Node.js: The Complete Guide to Build RESTful APIs (2018)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4WoGXuXe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/713f3olmxprcf1h5xsqp.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4WoGXuXe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/713f3olmxprcf1h5xsqp.jpg" alt="Node.js: The Complete Guide to Build RESTful APIs (2018)"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This course is designed by a wonderful teacher named Mosh Hamedani. Mosh is my most favorite teacher. If you want to learn NodeJS fundamentally you can follow this course. It is also packed with great content that includes basics like how node js architecture, how node works etc. It also includes how to built RESTful APIS from scratch. It also comes with concepts like error handling, unit testing, and integration testing. Especially, these testing sections that you would not found generally in other courses.&lt;/p&gt;

&lt;p&gt;You can go to the course by the following link:&lt;br&gt;
&lt;a href="https://www.udemy.com/course/nodejs-master-class/"&gt;https://www.udemy.com/course/nodejs-master-class/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3) Node.js, Express, MongoDB &amp;amp; More: The Complete Bootcamp 2020&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rFXQsdvW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ilskp624ckw1kbg29fpy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rFXQsdvW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/ilskp624ckw1kbg29fpy.jpg" alt="Node.js, Express, MongoDB &amp;amp; More: The Complete Bootcamp 2020"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This course is designed by Jonas Schmedtmann. I have put this course on the list because I have personally watched this course along with the above two courses. And I found out that it should be essential for beginners in NodeJS as well as in Backend development. Because Jonas gives a very detailed explanation about how things work behind the scenes. In general, how NodeJS works, what is event loop in NodeJS and fundamental concepts of how the web works in general. I highly suggest this course if you want to get a better idea about backend development plus NodeJS itself.&lt;/p&gt;

&lt;p&gt;You can go to the course by the following link:&lt;br&gt;
&lt;a href="https://www.udemy.com/course/nodejs-express-mongodb-bootcamp/"&gt;https://www.udemy.com/course/nodejs-express-mongodb-bootcamp/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here Ends, I have suggested the courses that I have personally followed during my NodeJS learning days. I got great values out of these courses. So I hope, You will like it. &lt;/p&gt;

&lt;p&gt;Good luck with your journey to Backend development!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
