For better understanding what is the difference between var and let in javascript, let us understand the scope concept in JavaScript. Basically JavaScript has a different scope like
- Global Scope: The variable declared globally and the same variable is available for access throughout your code.
- Function Scope: The variable declared inside a function and it can be accessed inside the function itself
- Block Scope: The variable declared in a block and those variables are needed in the block.
So, the difference between var and let in javascript is that
- let can be used to declare a variable that is needed only in the scope of block statement. And
- var can be used to declare a variable globally or locally inside any functions.
- The major difference is that let can not create a property on the global object
- let generates a SyntaxError if try to redeclare the same variable in the same scope of block statement.
- When you try to access the variable that is declared with the help of var it is evaluated to undefined, but
- When you try to access a variable that is declared with the help of let it will generate a ReferenceError.
Now Let’s see the same points with an example, consider below example for scope
let x = 1; if (x === 1) { let x = 2; console.log(x); // output // 2 } console.log(x); // output // 1
One more major difference is that let can not create a property on the global object, let’s consider below example
var x = 'global'; let y = 'global'; console.log(this.x); // "global" console.log(this.y); // undefined
Redeclarations:
One more difference is, let generates a SyntaxError if try to redeclare the same variable in the same scope of block statement.
let globalVar = 'Global var'; let globalVar = 'Global var'; console.log(globalVar); // output // Uncaught SyntaxError: Identifier 'globalVar' has already been declared To resolve the above SyntaxError you can create a nested block environment if(true) { let globalVar = 'Global var'; console.log(globalVar+' in first block'); } if(true) { let globalVar = 'Global var'; console.log(globalVar+' in second block'); } // output // Global var in first block // Global var in second block
Temporal dead zone:
When you try to access the variable that is declared with the help of var it is evaluated to undefined.
But when you try to access a variable that is declared with help of let it will generate a ReferenceError.
console.log(varWithVar); var varWithVar = 'Varibale with var'; // output //undefined console.log(varWithLet); let varWithLet = 'Varibale with let'; // output // Uncaught ReferenceError: Cannot access 'varWithLet' before initialization
Read the next article How to create an object in javascript?
One thought on “Difference between var and let in javascript”
Comments are closed.