<?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: Alok Raj</title>
    <description>The latest articles on DEV Community by Alok Raj (@alok722).</description>
    <link>https://dev.to/alok722</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%2F439020%2F41de8827-3821-4840-a9b1-7d5768c94259.png</url>
      <title>DEV Community: Alok Raj</title>
      <link>https://dev.to/alok722</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alok722"/>
    <language>en</language>
    <item>
      <title>Roadmap to become Web Developer in 2021</title>
      <dc:creator>Alok Raj</dc:creator>
      <pubDate>Thu, 15 Jul 2021 15:50:20 +0000</pubDate>
      <link>https://dev.to/alok722/roadmap-to-become-web-developer-in-2021-24mp</link>
      <guid>https://dev.to/alok722/roadmap-to-become-web-developer-in-2021-24mp</guid>
      <description>&lt;p&gt;If you are a total beginner to web development and thinking to dive deep into web development then you are at the right place. I am damn sure at the end of this article you will be having a clear picture of &lt;em&gt;**Where *&lt;/em&gt;&lt;em&gt;to Start, *&lt;/em&gt;&lt;em&gt;What *&lt;/em&gt;&lt;em&gt;to study, and *&lt;/em&gt;&lt;em&gt;How *&lt;/em&gt;*to study.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠&lt;/strong&gt; If you already have some exposure to web development then I will recommend you to visit &lt;a href="https://roadmap.sh/"&gt;roadmap.sh&lt;/a&gt;. It contains a detailed analysis of stacks to become a web developer. Also, you can read about my &lt;a href="https://alok722.medium.com/story-of-transition-to-the-senior-se-role-2c6ea1101e4a"&gt;***Story of Transition to the Senior SE role&lt;/a&gt;***&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Before diving into where and how let’s understand &lt;strong&gt;WHAT?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What is Frontend? What is Backend? What is Full-stack? How these are co-related? Find answers to all your questions &lt;a href="https://www.youtube.com/watch?v=pkdgVYehiTE"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hope now, you understand **What **is web development. Let’s understand from where we can get started with these.&lt;/p&gt;

&lt;p&gt;Concisely to become a full-stack &lt;strong&gt;&lt;em&gt;Javascript&lt;/em&gt;&lt;/strong&gt; developer, You need to accomplish these in the sequence. I will discuss these in detail as we go along in this article.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;step 1: learn HTML
step 2: learn CSS
step 3: learn CSS Frameworks (**e.g.: Bootstrap, Tailwind etc.**)
step 4: learn JavaScript
step 5: learn nodejs / expressjs **(or, Hapi, KoaJs, fastify, NestJs etc.)**
step 6: learn sql / nosql **(mongodb, PostgreSQL etc.)**
step 7: learn react / vue / angular
step 8: go back to step 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🏆 congratulations, you are now a full-stack developer.&lt;/p&gt;

&lt;p&gt;Now, let me start to discuss one at a time, what and from where you need to learn to get started in these tech domains. Some may argue, why not React/Vue/Angular first and then Node/Express. My take on this: You are free to do so but since all these front-end frameworks/libraries are dependent on package manager so why not learn Node first.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTML -&amp;gt; CSS -&amp;gt; CSS FRAMEWORK (e.g.: Bootstrap, Tailwind)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;HTML&lt;/strong&gt;: Hypertext Markup Language is the standard mark-up language for documents designed to be displayed in a web browser.&lt;/p&gt;

&lt;p&gt;Must know topics: What is HTML? Anatomy of HTML Tag, HTML Document Structure, &lt;a href="https://html-css-js.com/html/tags/"&gt;Essential HTML Tags&lt;/a&gt;, HTML form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS&lt;/strong&gt;: Cascading Style Sheets is a style sheet language that explains the presentation of a document written in a mark-up language like HTML.&lt;/p&gt;

&lt;p&gt;Must-know topics: What is CSS? Anatomy of CSS, CSS Selectors (Element, Class and ID), Combining selectors, Pseudo selectors, CSS Specificity (Conflict Resolution), Box Model and Layout, CSS Grid, CSS Flexbox, Relative vs Absolute element positioning, Box Model, Media Queries (Responsive design using CSS).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CSS FRAMEWORK&lt;/strong&gt;: It is a CSS framework to ease the design process. These are free and open-source CSS frameworks directed at responsive, mobile-first front-end web development. It contains CSS- and JavaScript-based design templates for typography, forms, buttons, navigation, and other interface components. Eg.: &lt;a href="https://getbootstrap.com/"&gt;https://getbootstrap.com/&lt;/a&gt;, &lt;a href="https://tailwindcss.com/"&gt;https://tailwindcss.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  JAVASCRIPT
&lt;/h2&gt;

&lt;p&gt;It is often abbreviated as JS, is a programming language that conforms to the ECMAScript specification. It is high-level, often just in time compiled, and multi-paradigm. It has curly-bracket syntax, dynamic typing, prototype-based object orientation, and first-class functions.&lt;/p&gt;

&lt;p&gt;In JavaScript, there is a lot to learn, so instead of mentioning topics, Now, I will recommend you the courses, which you can follow and get comfortable with. You can visit the &lt;a href="https://javascript.info/"&gt;**javascript.info&lt;/a&gt; **website for detailed and well documentation of JavaScript.&lt;/p&gt;

&lt;p&gt;Courses you can follow for getting started with HTML, CSS &amp;amp; JS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.coursera.org/learn/html-css-javascript-for-web-developers"&gt;https://www.coursera.org/learn/html-css-javascript-for-web-developers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is one of the brilliant courses available to get started with web development. Here, you will get to learn HTML, CSS, Bootstrap, JavaScript, and AJAX. You can apply for &lt;strong&gt;financial aid&lt;/strong&gt; or you can simply audit the course.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/course/the-web-developer-bootcamp/"&gt;https://www.udemy.com/course/the-web-developer-bootcamp/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Over here, I will suggest you complete until SECTION 20 (To DO Lists Project).&lt;/p&gt;

&lt;p&gt;Once you are done with the above-stated course, then now is a good time to dive deep and know all about &lt;strong&gt;JavaScript &amp;amp; **its architecture&lt;/strong&gt;.**&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/course/modern-javascript/"&gt;https://www.udemy.com/course/modern-javascript/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The perfect and complete course, which helps you to understand every nuke and corner of JS. This course is a perfect combo of project-based learning as well as a deeper dive into the why and how of JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;you can refer to this video and playlist for getting started with JS. &lt;strong&gt;[&lt;em&gt;FREE&lt;/em&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PL_c9BZzLwBRLVh9OdCBYFEql6esA6aRsi"&gt;https://www.youtube.com/playlist?list=PL_c9BZzLwBRLVh9OdCBYFEql6esA6aRsi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=qoSksQ4s_hg&amp;amp;list=PL4cUxeGkcC9i9Ae2D9Ee1RvylH38dKuET&amp;amp;ab_channel=TheNetNinja"&gt;https://www.youtube.com/watch?v=qoSksQ4s_hg&amp;amp;list=PL4cUxeGkcC9i9Ae2D9Ee1RvylH38dKuET&amp;amp;ab_channel=TheNetNinja&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;JavaScript ES6, ES7, ES8 - &lt;a href="https://www.youtube.com/watch?v=nZ1DMMsyVyI&amp;amp;ab_channel=freeCodeCamp.org"&gt;https://www.youtube.com/watch?v=nZ1DMMsyVyI&amp;amp;ab_channel=freeCodeCamp.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;also, there is one ongoing course from Akshay Saini which discussed architecture and behind the scene of JavaScript. [&lt;a href="https://www.youtube.com/watch?v=pN6jk0uUrD8&amp;amp;list=PLlasXeu85E9cQ32gLCvAvr9vNaUccPVNP&amp;amp;ab_channel=AkshaySaini"&gt;**Namaste Javascript&lt;/a&gt;**]&lt;/p&gt;

&lt;p&gt;&lt;em&gt;**Optional&lt;/em&gt;&lt;em&gt;: (Now is the good time to revise whatever you have learned.) I will recommend you to visit&lt;a href="https://www.freecodecamp.org/learn"&gt; freecodecamp&lt;/a&gt; and complete the projects of **Responsive web design certification **to get the certificate; if you feel stuck, you can definitely go through the tutorial provided there.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Once you are done with these above, now is a good time to dive into the framework/library.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://nodejs.org/en/"&gt;NODE&lt;/a&gt; -&amp;gt;&lt;a href="https://expressjs.com/"&gt; EXPRESS&lt;/a&gt; -&amp;gt;&lt;a href="https://www.mongodb.com/"&gt; MONGO-DB&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;For Backend, I will recommend a single course. Also, you can study each topic in detail by following a separate tutorial for each.&lt;/p&gt;

&lt;p&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;This course is a top-rated course on Udemy. This course has beautifully covered all the essentials of the Backend covering NodeJS, Express JS, Mongo, and Mongoose along with Unit Testing.&lt;/p&gt;

&lt;p&gt;you can refer to these videos and playlists for getting started with Node.JS &lt;strong&gt;[&lt;em&gt;FREE&lt;/em&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/playlist?list=PLillGF-RfqbYRpji8t4SxUkMxfowG4Kqp"&gt;https://www.youtube.com/playlist?list=PLillGF-RfqbYRpji8t4SxUkMxfowG4Kqp&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  FRONTEND LIBRARY/FRAMEWORK (e.g.: React, Vue, Angular):
&lt;/h3&gt;

&lt;p&gt;I will provide the links of course which I found amusing. I, being a MEAN stack developer, have experienced Angular &amp;amp; React courses myself and for Vue, I have taken opinions from my friends working with Vue.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: Which frontend framework/lib to choose?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Seeing the current market scenario, React is the first choice but at the same time, Vue JS is rising slowly and is expected to surpass React totally. Earlier Angular was at the top, not anymore. However, it does not matter which framework you know, once you are comfortable with any library or framework then you can easily pick others too. For more analysis on what to choose, you can search and find many helpful articles.&lt;/em&gt; &lt;em&gt;The major difference between the different stacks can be found &lt;a href="https://www.youtube.com/watch?v=KMX1mFEmM3E"&gt;here&lt;/a&gt;.&lt;/em&gt; &lt;em&gt;And if you just want to know individually what they are, that you can see &lt;a href="https://www.youtube.com/watch?v=5XlYQRGgYrY"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://angular.io/"&gt;**ANGULAR&lt;/a&gt;**
&lt;/h3&gt;

&lt;p&gt;Angular — The Complete Guide (2020 Edition) - &lt;a href="https://www.udemy.com/course/the-complete-guide-to-angular-2/"&gt;https://www.udemy.com/course/the-complete-guide-to-angular-2/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is one of the most comprehensive courses on angular. It is actually a bit too many details sometimes but better be safe than sorry.&lt;/p&gt;

&lt;p&gt;Or,&lt;/p&gt;

&lt;p&gt;you can follow &lt;a href="https://www.youtube.com/watch?v=0eWrpsCLMJQ&amp;amp;list=PLC3y8-rFHvwhBRAgFinJR8KHIrCdTkZcZ&amp;amp;ab_channel=Codevolution"&gt;this&lt;/a&gt; to quickly get started with Angular. &lt;strong&gt;[&lt;em&gt;FREE&lt;/em&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=0eWrpsCLMJQ&amp;amp;list=PLC3y8-rFHvwhBRAgFinJR8KHIrCdTkZcZ&amp;amp;ab_channel=Codevolution"&gt;**Angular Tutorial for Beginners&lt;/a&gt;**&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://vuejs.org/"&gt;**Vue JS&lt;/a&gt;**
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/course/vuejs-2-the-complete-guide/"&gt;**The Complete Guide (incl. Vue Router &amp;amp; Vuex)&lt;/a&gt;:**&lt;/p&gt;

&lt;p&gt;Being one of the highest-rated courses on Udemy taught by Maximilian Schwarzmüller, I can undoubtedly say, &lt;strong&gt;Go&lt;/strong&gt; for it. He is one of the BEST instructors present in the tech industry.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;you can refer to these videos and playlists for getting started with VueJs. &lt;strong&gt;[&lt;em&gt;FREE&lt;/em&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=5LYrN_cAJoA&amp;amp;list=PL4cUxeGkcC9gQcYgjhBoeQH7wiAyZNrYa&amp;amp;ab_channel=TheNetNinja"&gt;**VueJs 2&lt;/a&gt; + &lt;a href="https://www.youtube.com/watch?v=BGAu__J4xoc&amp;amp;list=PL4cUxeGkcC9i371QO_Rtkl26MwtiJ30P2&amp;amp;ab_channel=TheNetNinja"&gt;Vuex&lt;/a&gt;**&lt;/p&gt;

&lt;p&gt;or,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=e-E0UB-YDRk&amp;amp;ab_channel=Bitfumes"&gt;**VueJs 3&lt;/a&gt; + &lt;a href="https://www.youtube.com/watch?v=BGAu__J4xoc&amp;amp;list=PL4cUxeGkcC9i371QO_Rtkl26MwtiJ30P2&amp;amp;ab_channel=TheNetNinja"&gt;Vuex&lt;/a&gt;**&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://reactjs.org/"&gt;**React JS&lt;/a&gt;**
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.udemy.com/course/react-redux/"&gt;**Modern React with Redux&lt;/a&gt;**&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OR&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;you can refer to these videos and playlists for getting started with ReactJs. &lt;strong&gt;[&lt;em&gt;FREE&lt;/em&gt;]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=QFaFIcGhPoM&amp;amp;list=PLC3y8-rFHvwgg3vaYJgHGnModB54rxOk3&amp;amp;ab_channel=Codevolution"&gt;**React&lt;/a&gt; + &lt;a href="https://www.youtube.com/watch?v=9boMnm5X9ak&amp;amp;list=PLC3y8-rFHvwheJHvseC3I0HuYI2f46oAK&amp;amp;ab_channel=Codevolution"&gt;Redux&lt;/a&gt;**&lt;/p&gt;

&lt;p&gt;or,&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=OxIDLw0M-m0&amp;amp;list=PL4cUxeGkcC9ij8CfkAY2RAGb-tmkNwQHG&amp;amp;ab_channel=TheNetNinja"&gt;**React with Redux&lt;/a&gt;**&lt;/p&gt;

&lt;p&gt;Whatever front-end library/framework you choose and complete the course then start building projects on top of that.&lt;/p&gt;

&lt;p&gt;IDE Suggestion:&lt;a href="https://code.visualstudio.com/"&gt; https://code.visualstudio.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you wish to explore more and find some more relative tutorials. You can follow this &lt;a href="https://hackr.io/"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Congratulations&lt;/em&gt;, now you are ready to dive and become a full-stack JavaScript developer.&lt;/p&gt;

&lt;p&gt;Want to know about my journey. Read that here:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://alok722.medium.com/story-of-transition-to-the-senior-se-role-2c6ea1101e4a"&gt;Story of Transition to the Senior SE role&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;You can find me on &lt;a href="https://www.linkedin.com/in/alok722/"&gt;LinkedIn&lt;/a&gt; !!!&lt;/p&gt;

&lt;p&gt;Feedback appreciated !!!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>roadmap</category>
      <category>webdev</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>YDKJS - UP &amp; GOING, Takeaways for Experienced JavaScript Developer</title>
      <dc:creator>Alok Raj</dc:creator>
      <pubDate>Thu, 15 Jul 2021 15:24:16 +0000</pubDate>
      <link>https://dev.to/alok722/ydkjs-up-going-takeaways-for-experienced-javascript-developer-2b04</link>
      <guid>https://dev.to/alok722/ydkjs-up-going-takeaways-for-experienced-javascript-developer-2b04</guid>
      <description>&lt;p&gt;These are a few of the important takeaways from Kyle Simpson's &lt;strong&gt;YDKJS - UP &amp;amp; GOING&lt;/strong&gt; book series.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The JavaScript you know right now is probably parts handed down to you by others who've been burned by incomplete understanding. That JavaScript is but a shadow of the true language. You don't really know JavaScript, yet, but if you dig into this series, you will. Read on, my friends. JavaScript awaits you.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It's typically asserted that JavaScript is interpreted because your JavaScript source code is processed each time it's run. But that's not entirely accurate. The JavaScript engine actually compiles the program on the fly and then immediately runs the compiled code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Comments should explain why not what. They can optionally explain how if that's particularly confusing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The return value from the typeof operator is always one of six (seven as of ES6! - the "symbol" type) string values. That is, typeof "abc" returns "string", not string.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;typeof array; // "object" arrays are special objects &lt;br&gt;&lt;br&gt;
typeof null;     // "object" -- weird, bug&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The specific list of "falsy" values in JavaScript is as follows:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="dl"&gt;""&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;empty&lt;/span&gt; &lt;span class="nx"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&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="kc"&gt;NaN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;invalid&lt;/span&gt; &lt;span class="nx"&gt;number&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;
&lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Any value that's not on this "falsy" list is "truthy." Here are some examples of those:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="mi"&gt;42&lt;/span&gt;
&lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;"&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="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arrays&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;..&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;functions&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Equality
&lt;/h3&gt;

&lt;p&gt;The difference between &lt;code&gt;==&lt;/code&gt; and &lt;code&gt;===&lt;/code&gt; is usually characterized that &lt;code&gt;==&lt;/code&gt; checks for value equality and &lt;code&gt;===&lt;/code&gt; checks for both values and type equality. However, this is inaccurate. The proper way to characterize them is that &lt;code&gt;==&lt;/code&gt; checks for value equality with coercion allowed, and &lt;code&gt;===&lt;/code&gt; checks for value equality without allowing coercion; &lt;code&gt;===&lt;/code&gt; is often called "strict equality" for this reason.&lt;/p&gt;

&lt;p&gt;Consider the implicit coercion that's allowed by the &lt;code&gt;==&lt;/code&gt; loose-equality comparison and not allowed with the &lt;code&gt;===&lt;/code&gt; strict-equality:&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;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;42&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;         &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;        &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;In the &lt;code&gt;a == b&lt;/code&gt; comparison, JS notices that the types do not match, so it goes through an ordered series of steps to coerce one or both values to a different type until the types match, where then simple value equality can be checked.&lt;/p&gt;

&lt;p&gt;If you think about it, there are two possible ways &lt;code&gt;a == b&lt;/code&gt; could give &lt;code&gt;true&lt;/code&gt; via coercion. Either the comparison could end up as &lt;code&gt;42 == 42&lt;/code&gt; or it could be &lt;code&gt;"42" == "42"&lt;/code&gt;. So which is it?&lt;/p&gt;

&lt;p&gt;The answer: &lt;code&gt;"42"&lt;/code&gt; becomes &lt;code&gt;42&lt;/code&gt;, to make the comparison &lt;code&gt;42 == 42&lt;/code&gt;. In such a simple example, it doesn't really seem to matter which way that process goes, as the end result is the same. There are more complex cases where it matters not just what the end result of the comparison is but &lt;em&gt;how&lt;/em&gt; you get there.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;a === b&lt;/code&gt; produces &lt;code&gt;false&lt;/code&gt;, because the coercion is not allowed, so the simple value comparison obviously fails. Many developers feel that &lt;code&gt;===&lt;/code&gt; is more predictable, so they advocate always using that form and staying away from &lt;code&gt;==&lt;/code&gt;. I think this view is very shortsighted. I believe &lt;code&gt;==&lt;/code&gt; is a powerful tool that helps your program, &lt;em&gt;if you take the time to learn how it works.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To boil down a whole lot of details to a few simple takeaways, and help you know whether to use &lt;code&gt;==&lt;/code&gt; or &lt;code&gt;===&lt;/code&gt; in various situations, here are my simple rules:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If either value (aka side) in comparison could be the &lt;code&gt;true&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt; value, avoid &lt;code&gt;==&lt;/code&gt; and use &lt;code&gt;===&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If either value in comparison could be one of these specific values (&lt;code&gt;0&lt;/code&gt;, &lt;code&gt;""&lt;/code&gt;, or &lt;code&gt;[]&lt;/code&gt; -- empty array), avoid &lt;code&gt;==&lt;/code&gt; and use &lt;code&gt;===&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;In &lt;em&gt;all&lt;/em&gt; other cases, you're safe to use &lt;code&gt;==&lt;/code&gt;. Not only is it safe, but in many cases, it simplifies your code in a way that improves readability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should take special note of the &lt;code&gt;==&lt;/code&gt; and &lt;code&gt;===&lt;/code&gt; comparison rules if you're comparing two non-primitive values, like &lt;code&gt;object&lt;/code&gt;s (including &lt;code&gt;function&lt;/code&gt; and &lt;code&gt;array&lt;/code&gt;). Because those values are actually held by reference, both &lt;code&gt;==&lt;/code&gt; and &lt;code&gt;===&lt;/code&gt; comparisons will simply check whether the references match, not anything about the underlying values.&lt;/p&gt;

&lt;p&gt;For example, &lt;code&gt;array&lt;/code&gt;s are by default coerced to &lt;code&gt;string&lt;/code&gt;s by simply joining all the values with commas (&lt;code&gt;,&lt;/code&gt;) in between. You might think that two &lt;code&gt;array&lt;/code&gt;s with the same contents would be &lt;code&gt;==&lt;/code&gt; equal, but they're not:&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;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&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;var&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&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;var&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1,2,3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;     &lt;span class="c1"&gt;// false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Hoisting
&lt;/h3&gt;

&lt;p&gt;Wherever a &lt;code&gt;var&lt;/code&gt; appears inside a scope, that declaration is taken to belong to the entire scope and accessible everywhere throughout.&lt;br&gt;
Metaphorically, this behavior is called &lt;em&gt;hoisting&lt;/em&gt;, when a &lt;code&gt;var&lt;/code&gt; declaration is conceptually "moved" to the top of its enclosing scope. Technically, this process is more accurately explained by how code is compiled, but we can skip over those details for now.&lt;/p&gt;

&lt;p&gt;Consider:&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;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;              &lt;span class="c1"&gt;// works because `foo()`&lt;/span&gt;
                        &lt;span class="c1"&gt;// declaration is "hoisted"&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&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;a&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// 3&lt;/span&gt;

    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;          &lt;span class="c1"&gt;// declaration is "hoisted"&lt;/span&gt;
                        &lt;span class="c1"&gt;// to the top of `foo()`&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;a&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Closure
&lt;/h3&gt;

&lt;p&gt;You can think of closure as a way to "remember" and continue to access a function's scope (its variables) even once the function has finished running.&lt;/p&gt;

&lt;p&gt;Consider:&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;function&lt;/span&gt; &lt;span class="nx"&gt;makeAdder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// parameter `x` is an inner variable&lt;/span&gt;

    &lt;span class="c1"&gt;// inner function `add()` uses `x`, so&lt;/span&gt;
    &lt;span class="c1"&gt;// it has a "closure" over it&lt;/span&gt;
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The reference to the inner &lt;code&gt;add(..)&lt;/code&gt; function that gets returned with each call to the outer &lt;code&gt;makeAdder(..)&lt;/code&gt; is able to remember whatever &lt;code&gt;x&lt;/code&gt; value was passed in to &lt;code&gt;makeAdder(..)&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;this&lt;/code&gt; Identifier
&lt;/h3&gt;

&lt;p&gt;Another very commonly misunderstood concept in JavaScript is the &lt;code&gt;this&lt;/code&gt; identifier. Again, there's a couple of chapters on it in the &lt;em&gt;this &amp;amp; Object Prototypes&lt;/em&gt; title of this series, so here we'll just briefly introduce the concept.&lt;/p&gt;

&lt;p&gt;While it may often seem that &lt;code&gt;this&lt;/code&gt; is related to "object-oriented patterns," in JS &lt;code&gt;this&lt;/code&gt; is a different mechanism.&lt;/p&gt;

&lt;p&gt;If a function has a &lt;code&gt;this&lt;/code&gt; reference inside it, that &lt;code&gt;this&lt;/code&gt; reference usually points to an &lt;code&gt;object&lt;/code&gt;. But which &lt;code&gt;object&lt;/code&gt; it points to depends on how the function was called.&lt;/p&gt;

&lt;p&gt;It's important to realize that &lt;code&gt;this&lt;/code&gt; &lt;em&gt;does not&lt;/em&gt; refer to the function itself, as is the most common misconception.&lt;/p&gt;

&lt;p&gt;Here's a quick illustration:&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;function&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&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="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bar&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;bar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;global&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;obj1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;obj1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;obj2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;obj2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// --------&lt;/span&gt;

&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;              &lt;span class="c1"&gt;// "global"&lt;/span&gt;
&lt;span class="nx"&gt;obj1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;         &lt;span class="c1"&gt;// "obj1"&lt;/span&gt;
&lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;obj2&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;       &lt;span class="c1"&gt;// "obj2"&lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;          &lt;span class="c1"&gt;// undefined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;There are four rules for how &lt;code&gt;this&lt;/code&gt; gets set, and they're shown in those last four lines of that snippet.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;foo()&lt;/code&gt; ends up setting &lt;code&gt;this&lt;/code&gt; to the global object in non-strict mode -- in strict mode, &lt;code&gt;this&lt;/code&gt; would be &lt;code&gt;undefined&lt;/code&gt; and you'd get an error in accessing the &lt;code&gt;bar&lt;/code&gt; property -- so &lt;code&gt;"global"&lt;/code&gt; is the value found for &lt;code&gt;this.bar&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;obj1.foo()&lt;/code&gt; sets &lt;code&gt;this&lt;/code&gt; to the &lt;code&gt;obj1&lt;/code&gt; object.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;foo.call(obj2)&lt;/code&gt; sets &lt;code&gt;this&lt;/code&gt; to the &lt;code&gt;obj2&lt;/code&gt; object.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;new foo()&lt;/code&gt; sets &lt;code&gt;this&lt;/code&gt; to a brand new empty object.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Bottom line: to understand what &lt;code&gt;this&lt;/code&gt; points to, you have to examine how the function in question was called. It will be one of those four ways just shown, and that will then answer what &lt;code&gt;this&lt;/code&gt; is.&lt;/p&gt;
&lt;h3&gt;
  
  
  Prototypes
&lt;/h3&gt;

&lt;p&gt;When you reference a property on an object, if that property doesn't exist, JavaScript will automatically use that object's internal prototype reference to find another object to look for the property on. You could think of this almost as a fallback if the property is missing.&lt;/p&gt;

&lt;p&gt;The internal prototype reference linkage from one object to its fallback happens at the time the object is created. The simplest way to illustrate it is with a built-in utility called &lt;code&gt;Object.create(..)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Consider:&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;var&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// create `bar` and link it to `foo`&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;bar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="c1"&gt;// "hello world"&lt;/span&gt;
&lt;span class="nx"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;      &lt;span class="c1"&gt;// 42 &amp;lt;-- delegated to `foo`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;a&lt;/code&gt; property doesn't actually exist on the &lt;code&gt;bar&lt;/code&gt; object, but because &lt;code&gt;bar&lt;/code&gt; is prototype-linked to &lt;code&gt;foo&lt;/code&gt;, JavaScript automatically falls back to looking for &lt;code&gt;a&lt;/code&gt; on the &lt;code&gt;foo&lt;/code&gt; object, where it's found.&lt;/p&gt;

&lt;p&gt;This linkage may seem like a strange feature of the language. The most common way this feature is used -- and I would argue, abused -- is to try to emulate/fake a "class" mechanism with "inheritance."&lt;/p&gt;

&lt;p&gt;But a more natural way of applying prototypes is a pattern called "behavior delegation," where you intentionally design your linked objects to be able to &lt;em&gt;delegate&lt;/em&gt; from one to the other for parts of the needed behavior.&lt;/p&gt;
&lt;h3&gt;
  
  
  Non-JavaScript
&lt;/h3&gt;

&lt;p&gt;So far, the only things we've covered are in the JS language itself. The reality is that most JS is written to run in and interact with environments like browsers. A good chunk of the stuff that you write in your code is, strictly speaking, not directly controlled by JavaScript. That probably sounds a little strange.&lt;/p&gt;

&lt;p&gt;The most common non-JavaScript JavaScript you'll encounter is the DOM API. For example:&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;var&lt;/span&gt; &lt;span class="nx"&gt;el&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;document&lt;/code&gt; variable exists as a global variable when your code is running in a browser. It's not provided by the JS engine, nor is it particularly controlled by the JavaScript specification. It takes the form of something that looks an awful lot like a normal JS &lt;code&gt;object&lt;/code&gt;, but it's not really exactly that. It's a special &lt;code&gt;object,&lt;/code&gt; often called a "host object."&lt;/p&gt;

&lt;p&gt;Moreover, the &lt;code&gt;getElementById(..)&lt;/code&gt; method on &lt;code&gt;document&lt;/code&gt; looks like a normal JS function, but it's just a thinly exposed interface to a built-in method provided by the DOM from your browser. In some (newer-generation) browsers, this layer may also be in JS, but traditionally the DOM and its behavior are implemented in something more like C/C++.&lt;/p&gt;

&lt;p&gt;Another example is input/output (I/O).&lt;/p&gt;

&lt;p&gt;Everyone's favorite &lt;code&gt;alert(..)&lt;/code&gt; pops up a message box in the user's browser window. &lt;code&gt;alert(..)&lt;/code&gt; is provided to your JS program by the browser, not by the JS engine itself. The call you make sends the message to the browser internals and it handles drawing and displaying the message box.&lt;/p&gt;

&lt;p&gt;The same goes with &lt;code&gt;console.log(..)&lt;/code&gt;; your browser provides such mechanisms and hooks them up to the developer tools.&lt;/p&gt;



&lt;p&gt;That's all folks for today, Very soon I will be writing another blog for the next book in the series i.e. &lt;em&gt;SCOPE &amp;amp; CLOSURE&lt;/em&gt;.&lt;br&gt;&lt;br&gt;
Open to feedback and comments if I missed any concept which was covered in this book.&lt;/p&gt;

&lt;p&gt;🙏 Credit:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/getify"&gt;
        getify
      &lt;/a&gt; / &lt;a href="https://github.com/getify/You-Dont-Know-JS"&gt;
        You-Dont-Know-JS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A book series on JavaScript. @YDKJS on twitter.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
You Don't Know JS Yet (book series) - 2nd Edition&lt;/h1&gt;
&lt;p&gt;This is a series of books diving deep into the core mechanisms of the JavaScript language. This is the &lt;strong&gt;second edition&lt;/strong&gt; of the book series:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://leanpub.com/ydkjsy-get-started" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f1yXhsFl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/getify/You-Dont-Know-JSget-started/images/cover.png" width="75"&gt;&lt;/a&gt;  
&lt;a href="https://leanpub.com/ydkjsy-scope-closures" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--npoabbR6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/getify/You-Dont-Know-JSscope-closures/images/cover.png" width="75"&gt;&lt;/a&gt;  ...&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To read more about the motivations and perspective behind this book series, check out the &lt;a href="https://github.com/getify/You-Dont-Know-JSpreface.md"&gt;Preface&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you're looking for the previous &lt;strong&gt;first edition&lt;/strong&gt; books, &lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md"&gt;they can be found here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Titles&lt;/h2&gt;
&lt;p&gt;I recommend reading the &lt;strong&gt;second edition&lt;/strong&gt; books in this order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JSget-started/README.md"&gt;Get Started&lt;/a&gt; | &lt;a href="https://leanpub.com/ydkjsy-get-started" rel="nofollow"&gt;Buy on Leanpub&lt;/a&gt; | &lt;a href="https://www.amazon.com/dp/B084BNMN7T" rel="nofollow"&gt;Buy on Amazon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JSscope-closures/README.md"&gt;Scope &amp;amp; Closures&lt;/a&gt; | &lt;a href="https://leanpub.com/ydkjsy-scope-closures" rel="nofollow"&gt;Buy on Leanpub&lt;/a&gt; | &lt;a href="https://www.amazon.com/dp/B08634PZ3N" rel="nofollow"&gt;Buy on Amazon&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getify/You-Dont-Know-JSobjects-classes/README.md"&gt;Objects &amp;amp; Classes&lt;/a&gt; (draft in progress)&lt;/li&gt;
&lt;li&gt;Types &amp;amp; Grammar (not yet started)&lt;/li&gt;
&lt;li&gt;Sync &amp;amp; Async (not yet started)&lt;/li&gt;
&lt;li&gt;ES.Next &amp;amp; Beyond (not yet started)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you're looking for the previous &lt;strong&gt;first edition&lt;/strong&gt; books, &lt;a href="https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md"&gt;they can be found here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
Publishing&lt;/h2&gt;
&lt;p&gt;As always, you'll be able to read these books online…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/getify/You-Dont-Know-JS"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



</description>
    </item>
    <item>
      <title>My Portfolio</title>
      <dc:creator>Alok Raj</dc:creator>
      <pubDate>Thu, 04 Feb 2021 09:58:04 +0000</pubDate>
      <link>https://dev.to/alok722/my-portfolio-536a</link>
      <guid>https://dev.to/alok722/my-portfolio-536a</guid>
      <description>&lt;p&gt;Hello fellow devs &amp;amp; creators 🙋‍♂️&lt;br&gt;
Need some feedback on my portfolio on which I can improve upon.&lt;br&gt;
Also, it would be great if you all can suggest what more can be added.&lt;/p&gt;

&lt;p&gt;tech stack 👀: html, css, vanilla JS, js libraries&lt;/p&gt;

&lt;p&gt;p.s: if you like it, you can make one for yourself too.&lt;br&gt;
🎯 Source Code : &lt;a href="https://github.com/alok722/alokraj.tech"&gt;https://github.com/alok722/alokraj.tech&lt;/a&gt;&lt;br&gt;
🌍 URL : &lt;a href="https://alokraj.tech/"&gt;https://alokraj.tech/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/alok722"&gt;
        alok722
      &lt;/a&gt; / &lt;a href="https://github.com/alok722/alokraj"&gt;
        alokraj
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      a webpage to showcase my experience, education, skill-set, projects, certificates, achievements, and recommendations.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
welcome to my portfolio 👋
&lt;/h1&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/f4900cecf2a2b7a6e4de87a749a7070d815a07e584defc301a46a84cf6a4dd5e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d332e302e312d626c75652e7376673f63616368655365636f6e64733d32353932303030"&gt;&lt;img alt="Version" src="https://camo.githubusercontent.com/f4900cecf2a2b7a6e4de87a749a7070d815a07e584defc301a46a84cf6a4dd5e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f76657273696f6e2d332e302e312d626c75652e7376673f63616368655365636f6e64733d32353932303030"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/open-devs/fastify-typescript-generator/graphs/commit-activity"&gt;
    &lt;img alt="Maintenance" src="https://camo.githubusercontent.com/d18264814ab60a81c4500e48b88d2edbe4ac1bac6a6f2f2765e5ae0624ef8a89/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d61696e7461696e65642d7965732d626c75652e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/open-devs/fastify-typescript-generator/blob/master/LICENSE"&gt;
    &lt;img alt="License: MIT" src="https://camo.githubusercontent.com/2f870a75521b4357caf07f4c73bfa2eed65c848197dabb4434cf62115026d0e0/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6f70656e2d646576732f666173746966792d747970657363726970742d67656e657261746f72"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
🏠 &lt;a href="https://alokraj.me" rel="nofollow"&gt;homepage&lt;/a&gt;
&lt;/h3&gt;

&lt;h2&gt;
install&lt;/h2&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/alok722/alokraj.me.git&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
usage&lt;/h2&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;open index.html&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
❓ what is it&lt;/h2&gt;

&lt;p&gt;a webpage to showcase my experience, education, skill-set, projects, certificates, achievements and recommendations.&lt;/p&gt;

&lt;h2&gt;
👤 author&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;alok raj (&lt;a href="https://github.com/alok722/alokrajmailto:alokr417@gmail.com"&gt;alokr417@gmail.com&lt;/a&gt;)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;website: &lt;a href="https://alokraj.tech/" rel="nofollow"&gt;https://alokraj.tech/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;linkedin: &lt;a href="https://linkedin.com/in/alok722" rel="nofollow"&gt;@alok722&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
🚀 future scope&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;adding blog section&lt;/li&gt;
&lt;li&gt;adding contact me section&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
show your support&lt;/h2&gt;

&lt;p&gt;give a ⭐️ if you are using this template for your webpage.&lt;/p&gt;

&lt;h2&gt;
📝 license&lt;/h2&gt;

&lt;p&gt;This project is &lt;a href="https://github.com/alok722/portfolio/blob/master/LICENSE"&gt;MIT&lt;/a&gt; licensed.&lt;/p&gt;



&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/alok722/alokraj"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>portfolio</category>
      <category>javascript</category>
      <category>css</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Story of Transition to the Senior SE role</title>
      <dc:creator>Alok Raj</dc:creator>
      <pubDate>Tue, 05 Jan 2021 04:59:24 +0000</pubDate>
      <link>https://dev.to/alok722/story-of-transition-to-the-senior-se-role-5</link>
      <guid>https://dev.to/alok722/story-of-transition-to-the-senior-se-role-5</guid>
      <description>&lt;p&gt;&lt;strong&gt;TLDR;&lt;/strong&gt; This article focuses on my recent transition to the Senior SE role, my experience &amp;amp; learnings from that transition which I am sharing so that this might come in help to someone out there looking for it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_CmdKJ2L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2rm9fix4rtprvvd8c6vo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_CmdKJ2L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2rm9fix4rtprvvd8c6vo.jpg" alt="Photo by Xan Griffin" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/akshaymarch7/"&gt;Akshay Saini&lt;/a&gt;, you must have heard of him. If not, short intro: He is the creator of &lt;strong&gt;&lt;a href="https://www.youtube.com/watch?v=pN6jk0uUrD8&amp;amp;list=PLlasXeu85E9cQ32gLCvAvr9vNaUccPVNP&amp;amp;ab_channel=AkshaySaini"&gt;Namaste Javascript&lt;/a&gt;&lt;/strong&gt;. Now YOU recalled? No? Then go and check out at least one video from the series. I am sure, you will never forget him. He has simplified the most complex internal architecture of &lt;strong&gt;Javascript&lt;/strong&gt; and served on a plate for us to consume.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/pN6jk0uUrD8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Anyways, &lt;strong&gt;21 days&lt;/strong&gt; back he inspired us to utilize and make the best out of it, and start the new year afresh.&lt;br&gt;
So, I decided to daily solve at least one problem on leetcode and read the “You don’t know Js” book series. But everything doesn’t always go as planned, I was approached by a few recruiters on LinkedIn regarding job opportunity and I thought why don’t I try and utilize these 21 days to get a &lt;strong&gt;good job offer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So, there I was, &lt;em&gt;my quick intro&lt;/em&gt;: I am a MEAN stack developer with 1.5 yrs. of professional experience and a total of 2.5 yrs. of experience including internship &amp;amp; freelancing. I am in &lt;strong&gt;Love with the JavaScript&lt;/strong&gt; ecosystem, so I keep exploring different frameworks and libraries in this ever-expanding Javascript world.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; Did I get a good job offer?&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; Yes, I did. Not only a good offer but now I am going to be &lt;strong&gt;Senior SE&lt;/strong&gt; with a &lt;strong&gt;massive hike&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--85mSDLq7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AIO0G2ygwIml_NGAv26Na4w.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--85mSDLq7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AIO0G2ygwIml_NGAv26Na4w.gif" alt="celebrate the moment" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; How I did it even though I am not good at competitive coding?&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; I might not be as good at competitive coding but I am great at building modular, scalable web apps with good coding standards covering unit testing and proper documentation of the same so I focus mainly on that and always try to improve upon my skills.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  I would like to break my transition of becoming Senior SE in few modules:
&lt;/h3&gt;

&lt;h2&gt;
  
  
  HARD WORK:
&lt;/h2&gt;

&lt;p&gt;Most of us post office hours have a mentality that we are done for the day and then we simply relax or binge watch Netflix but I took a different approach &amp;amp; tried to invest at least 2 hrs. daily on my skill development.&lt;br&gt;
also, if I am traveling, I used to read JS articles or if I have 5–10 minutes before leaving, I watch small Instagram tech-based accounts posts for ex: NamasteDev’s &lt;a href="https://www.instagram.com/namastedevofficial/"&gt;account&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QcQO8rOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AxRdQT8_tGQmyFaoOOOkrbw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QcQO8rOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AxRdQT8_tGQmyFaoOOOkrbw.gif" alt="keep putting the hard work" width="490" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PATIENCE:
&lt;/h2&gt;

&lt;p&gt;Have patience, believe in yourself because sooner or later everything is going to be fine. Don’t get de-motivated, your time will come just keep putting in the hard work.&lt;br&gt;
I know it’s easy to say but practically living it is difficult. But we don’t have the option, we have to keep moving and trying if we desire to get good things out of life.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3-bUEUTb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AJSeKv2KK66iSk21QQJ9YkA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3-bUEUTb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AJSeKv2KK66iSk21QQJ9YkA.gif" alt="never lose hope" width="426" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  PREPARATION STRATEGY:
&lt;/h2&gt;

&lt;p&gt;Even though I managed to get &lt;strong&gt;3 offers&lt;/strong&gt; in these 21 days. But for this, I was preparing from the very beginning. Everyday bit by bit.&lt;br&gt;
My preparation strategy was simple &amp;amp; I made sure to make it efficient, I first listed down all the possible topics of my skill-set, then I created To-dos for each topic &amp;amp; started crossing out each topic one by one as soon as I was confident about the same, also making some rough notes (&lt;em&gt;I am organizing it currently and will upload on GitHub Soon&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;Please, find below important topics of my skill-set which I listed down:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://html.com/"&gt;HTML&lt;/a&gt;&lt;/strong&gt;: What is HTML, What’s new in HTML5, explain DOCTYPE declaration, Semantic elements in HTML &amp;amp; its advantage, commonly used tags, figure tag, field set, srcset attribute, tab index, inline &amp;amp; block level elements, meta tags, iframe &amp;amp; object tags, web workers, graphics - SVG &amp;amp; canvas, Quirks mode in HTML5, HTML5 Web API, image map, marquee, audio, video, geocode, datalist in form, Persistent Local Storage, Microdata, keygen, difference — Semantic Vs. Non-semantic, Application Cache in HTML5, Manifest file &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://www.w3schools.com/css/"&gt;CSS&lt;/a&gt;&lt;/strong&gt;: What is CSS, box model, CSS selectors, pseudo-class &amp;amp; pseudo-element, how does CSS work (under the hood of the browser), the difference between a relative, fixed, absolute and static, CSS Specificity, purpose of clearing floats, media query, CSS for print, selector that will match any links end/start/contains, flexbox, CSS grid, reset CSS, normalize CSS, Sass or Less and or Stylus, !important, concept of Tweening, any CSS framework &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://javascript.info/"&gt;JAVASCRIPT&lt;/a&gt;&lt;/strong&gt;: What is Javascript, Call stack, Primitive types, Value Types &amp;amp; Reference Types, Function scope, Execution context, Block scope &amp;amp; Lexical scope, IIFE, Modules, Namespaces, DOM and Layout Trees, this, call apply &amp;amp; bind, prototype inheritance &amp;amp; prototype chain, Object create &amp;amp; assign, Js array functions, Pure/Impure functions, Closures, High order functions, Promises, Callback, Async/Await, OOPs implementation, time/ execution related functions (setTimeout, setInterval), collections and generators, message queues, hoisting, polyfill, currying, debouncing, async vs defer, event bubbling &amp;amp; capturing, Prototype &amp;amp; Prototypal inheritance, Object prototypes, throttling, recursion, local storage vs session storage, CORS, web storage APIs, event loop, web sockets, “use strict”, eval, babel, pass by reference, pass by value, es6+ ex: spread operator, rest operator, destructuring, arrow function, template string, etc., for loop (for-each, for-of, for-in), AJAX &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://angular.io/"&gt;ANGULAR&lt;/a&gt;&lt;/strong&gt;: What is Angular, basic typescript, angular version changes, features of Angular, angular cli, advantage and disadvantage of angular, how angular work, Ivy, JIT &amp;amp; AOT in angular and its advantage &amp;amp; disadvantage, What are the building blocks of Angular, components, What is Data Binding, string interpolation, property binding, event binding, two way binding, data sharing between components, view encapsulation, view child, directive &amp;amp; its type with example, custom directive, pipe, custom pipe, pure pipe &amp;amp; impure pipe, async pipe, pipe chaining, mvc architecture, mvp architecture, angular routing, lazy loading, loadChildren, angular services, dependency injection, life cycle, ng-content, components vs directives, modules, decorators, internationalization, ng-container vs div, angular on server side, MVVM architecture, auth guard, interceptor, rxjs &amp;amp; its most used operators, promise vs observable, cold observable vs hot observable, ngClass &amp;amp; ngStyle, Angular elements, difference among “declarations”, “providers” and “import” in NgModule, form — reactive &amp;amp; template driven, dynamic form, Transpiling, unit-testing related concepts &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://reactjs.org/"&gt;REACT&lt;/a&gt;&lt;/strong&gt;: What is React, advantages of React, Component Architecture, Hierarchy, Communication between components, State &amp;amp; Props, props validation, SPA (Simple Page Application) vs MPA (Multi-Page Application), Functional vs Class-based component, Controlled Components, Pure Component how React &amp;amp; virtual DOM works, Higher-Order component, JSX, Life-Cycle Methods, render method, constructor, Hooks &amp;amp; Custom hooks, Routing &amp;amp; lazy loading, what is prop drilling &amp;amp; how to avoid it? State Management (Mostly Redux questions are asked but other libraries like Mobx are there), React clone elements, Strict Mode in React, synthetic events &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://vuejs.org/"&gt;VUE&lt;/a&gt;&lt;/strong&gt;: What is Vue.js, advantages of Vue.js, Component Architecture, Templates, Instances in Vue.js, Life-Cycle Methods, Computed Property, Watcher, Bindings, Events, Custom Events &amp;amp; root events, rendering &amp;amp; render function, transitions &amp;amp; animation, Directives, Refs, Routing &amp;amp; lazy loading, Mixins, Slots, Named Slots, Scoped Slots, Filters in Vue, State Management (Vuex), Reactive Interfaces, Vue Loader, Plugins &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://nodejs.org/en/"&gt;NODEJS&lt;/a&gt;&lt;/strong&gt;: What is Node.js, If Node.js is single-threaded then how it handles concurrency, benefits of NodeJS, event loop, event queue, Libuv, thread pool, the downside of the single-threaded concept, What is an error-first callback, event emitter, node environment, LTS release of node, reactor pattern in node, time/ execution related functions (setTimeout/clearTimeout, setInterval/clear interval, setImmediate/clear immediate, process.nextTick) where a node is used, Asynchronous &amp;amp; Synchronous, non-blocking” in node.js, REPL, NPM, semantic versioning, child process, fork &amp;amp; spawn, streams in node, fs module, HTTP module, Zlib module, stream module, util module, v8 engine, event-driven programming, package.json, create a simple server in Node.js, purpose of module exports, buffer class, different types of HTTP requests, put vs patch, cluster, event listeners, Microservice architecture, message queue &amp;amp; Trace, Stream Buffer, Crypto, Security Mechanism &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://expressjs.com/"&gt;EXPRESSJS&lt;/a&gt;&lt;/strong&gt;: What is express, features of Express JS, steps used to set up an express JS application, arguments available to an Express JS route handler-function, use of next in Express JS, Middleware in Express.js, types of middleware, templating engine, server-side rendered page, error handling &amp;amp; others..&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;&lt;a href="https://www.mongodb.com/"&gt;MongoDB &lt;/a&gt;&amp;amp; &lt;a href="https://mongoosejs.com/docs/api.html"&gt;MONGOOSE&lt;/a&gt;&lt;/strong&gt;: what is MongoDB, JSON vs BSON, data types supported by mongo, best features of MongoDB, the difference between SQL or NoSQL, _id Field in MongoDB, create or select a database, collection in mongo, CRUD operation in mongo, upsert, write concern, Storage Engine, replica set, journal, profiler, the concept of foreign key in mongo, sharding, GridFS, update the _id of one MongoDB Document, Does an update fsync to disk immediately, replica set, transactions/locking in MongoDB, ACID property, namespace, Horizontal Scaling &amp;amp; Vertical Scaling, MongoDB aggregation, Indexes in MongoDB, type of index, covered query, rename keys of document, models &amp;amp; schema in mongoose.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once I am done with listing the topics, I start reading all these topics online either on YouTube or medium or dev or on the documentation itself. I always make sure to understand the topics in a way that I can explain to anyone along with many scenarios and real-life examples.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Q:&lt;/strong&gt; What about DSA?&lt;br&gt;
&lt;strong&gt;A:&lt;/strong&gt; No one can escape DSA even in a frontend role interview. As Akshay, said in many of his videos you must be aware of basic DSA and its implementation. So, I made sure to learn most of the topics of DSA and its implementation in JavaScript.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This Udemy course came in very handy and boosted my confidence.&lt;br&gt;
&lt;a href="https://www.udemy.com/course/js-algorithms-and-data-structures-masterclass/"&gt;JavaScript Algorithms and Data Structures Masterclass&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LySccEaO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AB1nx2CtuKF87_i8xkhembw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LySccEaO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AB1nx2CtuKF87_i8xkhembw.gif" alt="tired gif" width="500" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hold on, few more points:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1yoCNlCo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AYSRVp8X3xRq54gdaASCyUA.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1yoCNlCo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AYSRVp8X3xRq54gdaASCyUA.gif" alt="ok" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;TIPS TO STAND OUT&lt;/strong&gt;
&lt;/h2&gt;

&lt;h3&gt;
  
  
  FIND A GOOD FRIEND
&lt;/h3&gt;

&lt;p&gt;A friend whose skillset matches with yours. As Akshay always says find your &lt;strong&gt;Simran&lt;/strong&gt;. This is very important because it fastens the process and you both get to learn so many things in less time. In my case my mentor/Simran/friend is &lt;strong&gt;&lt;a href="https://www.linkedin.com/in/mikr13/"&gt;Mihir&lt;/a&gt;&lt;/strong&gt;. We collab and work together on side stuff along with on our own adventure that is &lt;a href="https://opendevs.in/"&gt;open devs&lt;/a&gt;, a github organization we created to build cool open source projects &amp;amp; teach what we have learnt over the years.&lt;/p&gt;

&lt;h3&gt;
  
  
  WORK ON SIDE PROJECTS
&lt;/h3&gt;

&lt;p&gt;This always helps as it lets you implement the concept you have learned theoretically and most importantly if you have some good projects then you have a lot to talk about and the interviewer will have a lot to ask about from the project which you are master at.&lt;/p&gt;

&lt;h3&gt;
  
  
  ALWAYS KEEP LEARNING
&lt;/h3&gt;

&lt;p&gt;There is no ending to learning, you must always keep learning &amp;amp; practicing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FEW RECENT INTERVIEW JS QUESTIONS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· closure with example; advantage &amp;amp; disadvantage?&lt;/p&gt;

&lt;p&gt;· setInterval, setTimeout with example &amp;amp; how to break setInterval; advantage &amp;amp; disadvantage;&lt;/p&gt;

&lt;p&gt;· HTML5 Web API; Local Storage vs session storage&lt;/p&gt;

&lt;p&gt;· IIFE and anonymous function;&lt;/p&gt;

&lt;p&gt;· Service Workers&lt;/p&gt;

&lt;p&gt;· Output of code snippet and their explanation &amp;amp; more..&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FEW RESOURCES:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;· &lt;a href="https://github.com/sudheerj?tab=repositories"&gt;Interview Questions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;· &lt;a href="https://www.youtube.com/watch?v=pN6jk0uUrD8&amp;amp;list=PLlasXeu85E9cQ32gLCvAvr9vNaUccPVNP&amp;amp;ab_channel=AkshaySaini"&gt;Namaste Javascript&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;· &lt;a href="https://www.udemy.com/course/js-algorithms-and-data-structures-masterclass/"&gt;JavaScript Algorithms and Data Structures Masterclass&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;· &lt;a href="https://studio3t.com/knowledge-base/articles/mongodb-aggregation-framework"&gt;The Beginner’s Guide to MongoDB Aggregation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;· &lt;a href="https://medium.com/@vigowebs/frequently-asked-mongodb-interview-questions-and-answers-1f17c6b0950d"&gt;MongoDB Interview Questions and Answers&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;· &lt;a href="https://docs.google.com/document/d/e/2PACX-1vQaykuOq24EGSkGEPOQcthOExLTVgPNBWZdteWBeIYTEnCPDLx-_HgFq3LxUR5cT7gWZ8gDmqs_rQxQ/pub"&gt;Node.JS Prep&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Great, you have reached the bottom. If you are a Javascript developer then bookmark this because these topics are gonna very helpful in your next interview.&lt;/p&gt;

&lt;p&gt;p.s: Thank you &lt;a href="https://www.linkedin.com/in/mikr13/"&gt;Mihir&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/ravi-rajan-75b50a18b/"&gt;Ravi&lt;/a&gt; for the proof reading and adding more value to this article.&lt;br&gt;
Please give a clap if it is helpful&lt;br&gt;
&lt;strong&gt;DONE&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KQQofBMc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AUqrzkInIso64f82OWdXSTg.gif" alt="DONE" width="442" height="200"&gt;
&lt;/h2&gt;

</description>
      <category>javascript</category>
      <category>interviewpreparation</category>
      <category>jobhunt</category>
      <category>fullstacktopics</category>
    </item>
  </channel>
</rss>
