RSS Amplifier

Ajay Karwal · Jan 4, 2021

Declaring variables in JavaScript

0
Sign in to vote or save

Ajay Karwal

03 January, 2021

Since the introduction of ES6, we now have three ways of declaring variables in JavaScript — var, let and const.

var

The var declaration has been part of the language since the beginning. It creates a mutable variable which could have unwanted side effects.

var myNumber = 10;
console.log(myNumber); // 10
myNumber = 20;
console.log(myNumber); // 20

The scope of var is always global unless it is declared within a function.

A function-scoped variable is only available within the body of the function. A block-scoped variable is available in the global scope because of hoisting.

var myNumber = 10; // Global variable
function secretVar() {
	var secretNumber = 100; // Function scoped variable
}
if (myNumber > 5) {
	var foo = "I'm block scoped"; // Block scoped variable
}
console.log(myNumber); // 10
console.log(secretNumber); // ReferenceError: secretNumber is not defined
console.log(foo); // I'm block scoped

let

The let declaration is similar to var and is the preferred way of declaring mutable variables in ES6.

Unlike var, the let declaration is also block-scoped, meaning it is not available in the global scope when declared within a block.

If we update our earlier example to use let we can see that the foo variable is now not defined on the gloabl scope.

let myNumber = 10; // Global variable
function secretVar() {
	let secretNumber = 100; // Function scoped variable
}
if (myNumber > 5) {
	let foo = "I'm block scoped"; // Block scoped variable
}
console.log(myNumber); // 10
console.log(secretNumber); // ReferenceError: secretNumber is not defined
console.log(foo); // ReferenceError: foo is not defined

const

The const declaration, as the name implies, is used to define a constant variable; or an immutable variable which cannot be redeclared. Like let, the const declaration is also block-scoped.

const hero = 'Iron Man';
hero = 'Captain America'; //error : Assignment to constant variable.

Which should you use?

Personally I would try and declare all variables with const which is the least likely option to run into problems. If a variable absolutely needs to be mutable, I would then use let which has more robust scoping than var.

Read the original on ajaykarwal.com

Comments

Nothing yet. Say the first thing.

    Sign in to join the conversation.