var keyword:
The var statement is used to declare a variable. We can optionally initialize the value of that variable.
Example: var num =10;
let keyword:
The let statement is used to declare a local variable in a block scope. It is similar to var, in that we can optionally initialize the variable.
Example: let num =10;
Scope difference between var and let:
Var scope:
The var is scoped to the nearest function block. In the below example variable num2 is declared within a block but can be accessed within the function and outside this block. The statement in which we are using this variable should be after this block which means we cannot access num2 before the declaration statement.
function varTest(){ var num1 =10; console.log(num1); //output 10 if(true){ var num2=20; console.log(num2); //output 20 } console.log(num1); //output 10 console.log(num2); //output 20 }
Let scope:
The let is scoped to the nearest enclosing block. In the below example variable num2 is declared within a block and cannot be accessed outside this block.
function letTest(){ var num1 =10; console.log(num1); //output 10 if(true){ var num2=20; console.log(num2); //output 20 } console.log(num1); //output 10 console.log(num2); //Cannot be accessed here }
Redeclaration difference between var and let:
Redeclaration with var:
The var keyword provides the facility to re-declare the same variable in the same scope.
function varTest(){ var num1 = 10; var num1 = 20; //num1 is replaced }
Redeclaration with let:
The let keyword does not provides the facility to re-declare the same variable in the same scope.
function letTest(){ var num1 = 10; var num1 = 20; // SyntaxError: Identifier num1 has already been declared }