📦
Basics

Variables — let, const, var

Kaunsa Kab Use Karo
💡 var, let, const teen tarah ke containers hain — var ek purana, thoda "leaky" container hai (scope rules confusing), let ek modern, reusable container hai (value badal sakti hai), const ek sealed container hai (ek baar seal karne ke baad, khol nahi sakte — value fix).

let modern variable declaration hai — value reassign ho sakti hai, block-scoped (sirf us {} ke andar valid jaha declare hui). const bhi block-scoped hai, lekin reassign NAHI ho sakta — ek baar assign karne ke baad fixed. var purana (ES5) tarika hai — function-scoped (block-scoped nahi), aur "hoisting" ki wajah se confusing behavior deta hai.

Modern JavaScript (2015+) mein var almost kabhi use nahi hota — const DEFAULT choice hai (agar value change nahi hogi), let tabhi jab reassignment genuinely zaroori ho.

const name = "Aarav";     // reassign nahi ho sakta
// name = "Riya";           // ERROR!

let age = 20;                 // reassign ho sakta hai
age = 21;                       // valid

var oldStyle = "avoid this";   // purana, avoid karo modern code mein

if (true) {
  let blockScoped = "sirf yaha valid";
  var functionScoped = "poore function mein valid";
}
// console.log(blockScoped);  // ERROR — block ke bahar accessible nahi
// console.log(functionScoped); // Valid — var block-scope follow nahi karta
📦
var, let, const teen tarah ke containers hain — var ek purana, thoda "leaky" container hai (scope rules confusing), let ek modern, reusable container hai (value badal sakti hai), const ek sealed container hai (ek baar seal karne ke baad, khol nahi sakte — value fix).
1 / 2
⚡ झट से Recap
  • const = default choice, reassign nahi ho sakta
  • let = jab reassignment zaroori ho, block-scoped
  • var = purana, avoid karo (function-scoped, hoisting confusion)
इस page में (2 subtopics)

let/const bhi technically "hoisted" hote hain (var jaisa), lekin ek "Temporal Dead Zone" mein rehte hain — declare hone se PEHLE access karne ki koshish karne par error milta hai (var ke silent undefined ke bajaye). Ye actually safer hai — bugs jaldi pakde jaate hain.

console.log(x);   // undefined (var ka silent, confusing behavior)
var x = 5;

console.log(y);   // ReferenceError! (let ka safer, explicit behavior)
let y = 5;
💡Tip: Temporal Dead Zone (TDZ) ek jaan-boojh kar design decision hai — accidentally variable ko declare hone se pehle use karna ek common bug source tha, TDZ isse turant crash karke pakad leta hai.

JavaScript convention hai TRUE "constants" (jinki value kabhi nahi badhegi, jaise configuration values) ko UPPER_SNAKE_CASE mein likhna — normal const variables (jo sirf reassign nahi honge, lekin conceptually "constant" nahi hain) regular camelCase rehte hain.

const MAX_USERS = 100;        // true constant — UPPER_SNAKE_CASE
const API_URL = "https://api.example.com";

const userName = "Aarav";     // regular const, camelCase (normal variable)
const isLoggedIn = true;
💡Tip: Ye convention Python/C++ jaisi languages se bhi consistent hai — UPPER_CASE turant signal karta hai "ye ek configuration/magic-number constant hai", visually alag dikhta hai normal variables se.