Introduction
In JavaScript, variables play a fundamental role in storing and managing data. There are three main ways to declare and initialize variables: var, let, and const. Each has its own characteristics and use cases. Let's explore each of them in depth, along with examples:
  
  
  var:
- 
varwas the original way to declare variables in JavaScript, and it has some unique behaviors and quirks. - Variables declared with 
varare function-scoped, meaning their scope is limited to the function in which they are declared. - Variables declared with 
varare hoisted, which means that they are moved to the top of their containing function or global scope during the compilation phase. However, their assignments remain in place. 
   function varExample() {
     if (true) {
       var x = 10;
     }
     console.log(x); // 10
   }
   console.log(x); // undefined (hoisted but not initialized)
  
  
  let:
- 
letwas introduced in ECMAScript 2015 (ES6) and offers block-level scoping. - Variables declared with 
letare not hoisted to the top of their scope, and they are only accessible within the block they are defined in. 
   function letExample() {
     if (true) {
       let y = 20;
     }
     console.log(y); // ReferenceError: y is not defined
   }
  
  
  const:
- 
constis also introduced in ES6 and has similar block-level scoping aslet. - However, variables declared with 
constcannot be reassigned after their initial value is assigned. They must be initialized upon declaration. 
   function constExample() {
     const z = 30;
     // z = 40; // Error: Assignment to constant variable
     console.log(z); // 30
   }
When to use each type:
Don't use
var, as it has some unexpected behavior and can lead to subtle bugs. It's best to useletorconstinstead.Use
letwhen you need to reassign the variable's value within the same block.Use
constwhen the value should never change after initialization. It's a good practice to useconstfor variables that represent constants or values that should not be reassigned.
Practical Example:
Here's a more practical example showing the differences between let and const:
function variableExamples() {
  // Using let for reassignable variables
  let counter = 0;
  counter = 1;
  console.log(counter); // 1
  // Using const for constants
  const pi = 3.14159;
  // pi = 3.14; // Error: Assignment to constant variable
  console.log(pi);
  // Using var (not recommended)
  if (true) {
    var age = 25;
  }
  console.log(age); // 25 (function-scoped)
}
variableExamples();
// console.log(counter); // ReferenceError: counter is not defined
// console.log(pi); // ReferenceError: pi is not defined
// console.log(age); // 25 (still accessible, not block-scoped)
My Advice?
My personal advice is to always start with const. When you feel the need that it should be changed then make it let. Never go for var. 
Happy coding! 🚀👨💻🌐
Follow me for more such content:
LinkedIn: https://www.linkedin.com/in/shameeluddin/
Github: https://github.com/Shameel123
    
Top comments (4)
Nice advises thank you.
Beware when using const on non primitive types, like arrays.
Indeed, 'a' is not reassignabled, but it can be modified.
If you want an immutable array, you have to 'freeze' it
Indeed, I was thinking about mentioning freeze but thought it would be a bit too much for a beginner level blog.
I understand :-)
Good stuff. When I was learning JavaScript we were taught never to use var and this article does a good job of illustrating why.