What is the difference between Declaring and Initializing a variable in JavaScript?

In JavaScript, declaring a variable means creating it in memory, while initializing means assigning it a value. Understanding this distinction is crucial for avoiding common bugs.

What is Variable Declaration?

Declaration creates a variable in the current scope and allocates memory for it. The variable exists but has no assigned value.

var name;        // Declaration only
let age;         // Declaration only
const PI;        // Error! const must be initialized
SyntaxError: Missing initializer in const declaration

What is Variable Initialization?

Initialization assigns a value to a declared variable. This can happen during declaration or later.

var name = "John";           // Declaration + initialization
let age = 25;                // Declaration + initialization
const PI = 3.14159;          // Declaration + initialization (required for const)

var city;                    // Declaration only
city = "New York";           // Initialization later

console.log(name);           // "John"
console.log(age);            // 25
console.log(PI);             // 3.14159
console.log(city);           // "New York"
John
25
3.14159
New York

Default Values and Hoisting

JavaScript automatically initializes declared variables with undefined during the creation phase:

console.log(x);              // undefined (not an error due to hoisting)
var x = 10;
console.log(x);              // 10

// The above is interpreted as:
// var x;                    // Declaration hoisted, initialized to undefined
// console.log(x);           // undefined
// x = 10;                   // Assignment happens here
// console.log(x);           // 10
undefined
10

let and const Behavior

let and const behave differently with hoisting:

try {
    console.log(y);          // ReferenceError: Cannot access 'y' before initialization
    let y = 20;
} catch (error) {
    console.log("Error:", error.message);
}

try {
    console.log(z);          // ReferenceError: Cannot access 'z' before initialization  
    const z = 30;
} catch (error) {
    console.log("Error:", error.message);
}
Error: Cannot access 'y' before initialization
Error: Cannot access 'z' before initialization

Comparison Table

Keyword Can Declare Without Value? Hoisted? Default Value
var Yes Yes (initialized to undefined) undefined
let Yes Yes (but in temporal dead zone) undefined
const No Yes (but in temporal dead zone) Must be initialized

ECMAScript Specification

According to the ECMAScript specification:

"Var variables are created when their containing Lexical Environment is instantiated and are initialized to undefined when created. A variable defined by a VariableDeclaration with an Initializer is assigned the value when the VariableDeclaration is executed, not when the variable is created."

Key points:

  • All variables are initialized with undefined during creation
  • Variable declarations are processed before code execution
  • Explicit initialization happens during code execution, not creation

Conclusion

Declaration creates the variable in memory, while initialization assigns it a value. Understanding this difference helps prevent undefined variable errors and explains JavaScript's hoisting behavior.

Updated on: 2026-03-15T21:27:04+05:30

584 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements