Explain hoisting in JavaScript

JavascriptWeb DevelopmentObject Oriented Programming

Hoisting allows us to call functions and variables (declared with var) before they are being defined by moving them to the top of their scope before the execution of code begins.

Following is the code showing hoisting for variables and functions in JavaScript −


 Live Demo

<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
   body {
      font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
   .result,.sample {
      font-size: 20px;
      font-weight: 500;
<h1>Hoisting in JavaScript</h1>
<div class="sample">
Calling functions and variables before they are defined
<div style="color: green;" class="result"></div>
<button class="btn">CLICK HERE</button>
Click on the above button to see hoisting in action
   let btnEle = document.querySelector(".btn");
   let resEle = document.querySelector(".result");
   btnEle.addEventListener("click", () => {
      resEle.innerHTML = "retString() : " + retString() + "<br>";
      resEle.innerHTML += "var a = " + a + "<br>";
      try {
         resEle.innerHTML += "let b = " + b + "<br>";
      catch (err) {
         resEle.innerHTML += err;
      let b = 55;
      var a = 22;
      function retString() {
         return "Hello world";


The above code will produce the following output −

On clicking the ‘CLICK HERE’ button −

Published on 15-Jul-2020 13:14:43