JavaScript tutorials for Beginners – JavaScript Hoisting

Hits: 13

 

(JavaScript Tutorials for Beginners)

In this end-to-end example, you will learn – JavaScript tutorials for Beginners – JavaScript Hoisting.

JavaScript Hoisting

In this tutorial, you will learn about JavaScript hoisting with the help of examples.

Hoisting in JavaScript is a behavior in which a function or a variable can be used before declaration. For example,

// using test before declaring
console.log(test);   // undefined
var test;

The above program works and the output will be undefined. The above program behaves as

// using test before declaring
var test;
console.log(test); // undefined

Since, the variable test is only declared and has no value, undefined value is assigned to it.

Note: In hoisting, though it seems that the declaration has moved up in the program, the actual thing that happens is that the function and variable declarations are added to memory during the compile phase.


Variable Hoisting

In terms of variables and constants, keyword var is hoisted and let and const does not allow hoisting.

For example,

// program to display value
a = 5;
console.log(a);
var a; // 5

In the above example, variable a is used before declaring it. And the program works and displays the output 5. The program behaves as:

// program to display value
var a;
a = 5;
console.log(a); // 5

However in JavaScript, initializations are not hoisted. For example,

// program to display value
console.log(a);
var a = 5;

Output

undefined

The above program behaves as:

var a;
console.log(a);
a = 5;

Only the declaration is moved to the memory in the compile phase. Hence, the value of variable a is undefined because a is printed without initializing it.


Also, when the variable is used inside the function, the variable is hoisted only to the top of the function. For example,

// program to display value
var a = 4;

function greet() {
    b = 'hello';
    console.log(b); // hello
    var b;
}

greet(); // hello
console.log(b);

Output

hello
Uncaught ReferenceError: b is not defined

In the above example, variable b is hoisted to the top of the function greet and becomes a local variable. Hence b is only accessible inside the function. b does not become a global variable.

To learn more about local and global variables, visit JavaScript Variable Scope.

Note: In hoisting, the variable declaration is only accessible to the immediate scope.


If a variable is used with the let keyword, that variable is not hoisted. For example,

// program to display value
a = 5;
console.log(a);
let a; // error

Output

Uncaught ReferenceError: Cannot access 'a' before initialization

While using let, the variable must be declared first.


Function Hoisting

A function can be called before declaring it. For example,

// program to print the text
greet();

function greet() {
    console.log('Hi, there.');
}

Output

Hi, there

In the above program, the function greet is called before declaring it and the program shows the output. This is due to hoisting.


However, when a function is used as an expression, an error occurs because only declarations are hoisted. For example;

// program to print the text

greet();

let greet = function() {
    console.log('Hi, there.');
}

Output

Uncaught ReferenceError: greet is not defined

If var was used in the above program, the error would be:

Uncaught TypeError: greet is not a function

Note: Generally, hoisting is not performed in other programming languages like Python, C, C++, Java.

Hoisting can cause undesirable outcomes in your program. And it is best to declare variables and functions first before using them and avoid hoisting.

In the case of variables, it is better to use let than var.

 

 

Personal Career & Learning Guide for Data Analyst, Data Engineer and Data Scientist

Applied Machine Learning & Data Science Projects and Coding Recipes for Beginners

A list of FREE programming examples together with eTutorials & eBooks @ SETScholars

95% Discount on “Projects & Recipes, tutorials, ebooks”

Projects and Coding Recipes, eTutorials and eBooks: The best All-in-One resources for Data Analyst, Data Scientist, Machine Learning Engineer and Software Developer

Topics included: Classification, Clustering, Regression, Forecasting, Algorithms, Data Structures, Data Analytics & Data Science, Deep Learning, Machine Learning, Programming Languages and Software Tools & Packages.
(Discount is valid for limited time only)

Disclaimer: The information and code presented within this recipe/tutorial is only for educational and coaching purposes for beginners and developers. Anyone can practice and apply the recipe/tutorial presented here, but the reader is taking full responsibility for his/her actions. The author (content curator) of this recipe (code / program) has made every effort to ensure the accuracy of the information was correct at time of publication. The author (content curator) does not assume and hereby disclaims any liability to any party for any loss, damage, or disruption caused by errors or omissions, whether such errors or omissions result from accident, negligence, or any other cause. The information presented here could also be found in public knowledge domains.

Learn by Coding: v-Tutorials on Applied Machine Learning and Data Science for Beginners

Please do not waste your valuable time by watching videos, rather use end-to-end (Python and R) recipes from Professional Data Scientists to practice coding, and land the most demandable jobs in the fields of Predictive analytics & AI (Machine Learning and Data Science).

The objective is to guide the developers & analysts to “Learn how to Code” for Applied AI using end-to-end coding solutions, and unlock the world of opportunities!

 

JavaScript tutorials for Beginners – JavaScript Function and Function Expressions

JavaScript tutorials for Beginners – JavaScript Variable Scope

JavaScript tutorials for Beginners -JavaScript Data Types