Var, let & Const are used to declare variables, objects and constants in JavaScript.
Var
Var keyword has been used for a longtime for variable declaration.
It is Function Scoped, it makes variables accessible only within the function boundary where it is declared.
Take a look at this snippet
function getX(){
var x = 1;
}
getX();
console.log(x)
//ReferenceError: x is not defined
You can re-declare same variable in same scope with Var.
if (true){
var x = 2;
var x = 3;
}
console.log(x)
// 3
Let
Let was introduced in ES6ECMAScript2015.
It is Block Scoped, any code written within {}
is said to be in a Block. So, that's the restriction that ECMA wanted to implement with let, making variables inaccessible outside the block.
function exampleLet() {
if (true) {
let y = 20;
}
console.log(y); // Error: y is not defined
}
Also, you cannot re-declare same variable within the same scope.
if (true){
let x = 2;
let x = 3;
}
// SyntaxError: Identifier 'x' has already been declared
Const
Const as the name suggests is used to declare Constants.
Declaration with consts are *Block Scoped *
Constant needs to be initialized at the time of declaration, else it throws Syntax error
Re-assigning or re-declaration is not allowed, it throws Syntax or Type Error.
Check out the snippet below
if (true){
const x;
}
// SyntaxError: Missing initializer in const declaration
if (true){
const x = 1;
x = 2; // TypeError: Assignment to constant variable.
}
if (true){
const x = 1;
const x = 2;
}
// SyntaxError: Identifier 'x' has already been declared
const x = 2;
if (true){
const x = 1;
}
// Output : x = 2
Strict Mode
A feature introduced in ES5, it enforces stricter parsing and error handling.
To enable strict mode, you need to put _use strict;_
at the beginning of code or function block.
// Global variable
var globalVar = "I'm a global variable";
function baz() {
var localVar = "I'm a local variable";
console.log(localVar); // Accessible inside the function
if (true) {
let blockVar = "I'm a block-scoped variable";
console.log(blockVar); // Accessible inside the block
}
// console.log(blockVar); // Error: blockVar is not defined (not accessible outside the block)
}
Top comments (0)