Execution Context Kya Hota Hai ?
Definition :
JavaScript mein Execution Context ek environment hota hai jahan par code execute hota hai. Jab bhi JavaScript code chalaya jata hai, interpreter sabse pehle ek Execution Context create karta hai. Ye teen cheezon se bana hota hai – Variable Object (VO), Scope Chain, aur this keyword. Jab hum kisi function ko call karte hain, ek naya Execution Context banta hai aur ye current context ke upar stack mein push ho jata hai, jise Call Stack kehte hain.
JavaScript do types ke Execution Context use karta hai – Global Execution Context (GEC) aur Function Execution Context (FEC). GEC tab create hota hai jab page load hota hai, aur FEC tab banta hai jab function call hota hai.
Har Execution Context do phases mein chalta hai:
- Creation Phase (variables, functions allocate hote hain)
- Execution Phase (actual code run hota hai)
Ye concept JavaScript ka base hai aur code ke behaviour ko deeply samajhne mein madad karta hai.
Types of Execution Contexts (Execution Context ke prakar) :
JavaScript mein 3 tarah ke execution context hote hain:
- Global Execution Context (GEC)
- Function Execution Context (FEC)
- Eval Execution Context (kam use hota hai)
1. Global Execution Context (GEC):
- Jab browser ya JavaScript engine aapke program ko first time load karta hai, sabse pehle GEC create hota hai.
- Is context mein global code (jo kisi function ke andar nahi hai) run hota hai.
- Is context mein
this
ka value browser meinwindow
object hoti hai. - Ek program mein sirf ek hi baar GEC create hota hai.
var name = "Sandeep";
console.log(name);
2. Function Execution Context (FEC):
- Jab bhi hum kisi function ko call karte hain, ek naya Execution Context banta hai sirf us function ke liye.
- Har ek function ke liye alag Execution Context banta hai.
- Function Execution Context bhi 2 phases mein banta hai.
function greet() {
var message = "Hello!";
console.log(message);
}
greet(); // Is call par FEC create hoga
Eval Execution Context:
eval()
function ek string ko JavaScript code ke roop mein run karta hai.- Ye rarely use hota hai aur zyada secure nahi hota, isliye avoid kiya jaata hai.
Execution Context ka Structure – Do Phases
Jab bhi koi Execution Context create hota hai (Global ya Function), uske 2 major phases hote hain:
1. Creation Phase (Banane ka Charan):
- Memory allocate karta hai variables aur functions ke liye.
- Variables ko
undefined
assign karta hai (hoisting). - Functions ke definitions ko pura memory mein store karta hai.
this
keyword ko define karta hai.
console.log(a); // undefined
var a = 10;
function test() {
console.log("Test");
}
2. Execution Phase (Chalne ka Charan):
- Ab actual code run hota hai.
- Variables ko unki values assign ki jaati hain.
- Function calls ko execute kiya jaata hai.
Call Stack and Execution Context
JavaScript mein Call Stack ek mechanism hai jo function calls ko track karta hai. Jab bhi koi function call hota hai, ek Execution Context create hota hai, jo batata hai ki function kis environment mein run ho raha hai (jaise variables, scope, this value, etc.). Ye Execution Context stack ke top par push hota hai.
Jab function complete ho jata hai, uska Execution Context stack se hata diya jata hai (pop hota hai). Ye process LIFO (Last In, First Out) principle par kaam karta hai.
Agar function ke andar ek aur function call hota hai, toh naya Execution Context create hoke stack ke top par chala jata hai. JavaScript engine isi stack ka use karke decide karta hai ki kaunsa function pehle execute hoga.
Agar stack bahut zyada bhar jaye, toh “Stack Overflow” error aa sakta hai. Isliye Call Stack aur Execution Context ka samajhna debugging ke liye kaafi important hota hai.
function first() {
second();
}
function second() {
console.log("Hello from second");
}
first();
Execution Flow:
- GEC create hota hai →
first()
call hota hai → first() ka FEC create hota hai first()
ke andarsecond()
call hota hai → second() ka FEC create hota haisecond()
ka code run hota hai → uska FEC destroy hota haifirst()
ka FEC destroy hota hai- GEC tab tak active rehta hai jab tak pura code complete nahi ho jaata
Important Concepts Related to Execution Context:
Hoisting:
- Variables and functions ko unki jagah se upar uthaa diya jaata hai (Creation Phase mein).
- Variables ko
undefined
milta hai aur functions ko unka pura definition.
Scope Chain:
- Scope chain ek concept hai JavaScript mein jo define karta hai ki variables ko kaise access kiya jaata hai nested functions ke andar. Jab bhi ek variable ko access karne ki koshish hoti hai, JavaScript pehle current scope mein us variable ko dhundhta hai. Agar waha nahi milta, to woh outer scope mein jaata hai, aur ye process tab tak chalta hai jab tak global scope tak nahi pahuch jata. Ye chain of scopes ko hi scope chain kehte hain. Isse hum samajh pate hain ki kisi bhi variable ki visibility aur accessibility kya hai kis scope mein.
Lexical Environment:
- JavaScript mein Lexical Environment ek aisa structure hota hai jo variables aur functions ki information ko store karta hai. Jab bhi koi function run hota hai, ek naya lexical environment create hota hai jisme us function ke andar declare kiye gaye variables aur outer environment ka reference hota hai. Ye environment do parts mein hota hai: Environment Record (jisme local variables store hote hain) aur Outer Lexical Environment Reference (jisse outer scope access hota hai). JavaScript code lexical (yaani likhne ke order) ke hisaab se scope decide karta hai, isiliye ise lexical environment kehte hain.
Final Summary :
Concept | Explanation |
---|---|
Execution Context | Environment jisme JS code run hota hai |
Types | Global, Function, Eval |
Phases | Creation & Execution |
Call Stack | Functions ka stack, manage karta hai context |
this keyword | Global mein window, function ke hisaab se change hota hai |
Scope Chain | Functions ka access chain |
Hoisting | Variables/functions ka upar uthna |
Call Stack & Memory Heap :
Call Stack aur Memory Heap JavaScript ke do important concepts hain jo program execution ko manage karte hain.
Call Stack ek data structure hai jo functions ko execute karte waqt track karta hai. Jab ek function call hota hai, wo stack mein push hota hai aur jab execution complete hota hai, wo stack se pop hota hai. Isse JavaScript ko pata chalta hai ki kaunsa function abhi execute ho raha hai.
Memory Heap ek large pool of memory hai jahan objects aur variables dynamically store kiye jate hain. Ye memory stack se alag hoti hai aur JavaScript runtime ke dwara manage hoti hai. Jab kisi variable ya object ki zarurat nahi hoti, garbage collector usse heap se remove kar deta hai.
Quiz: Test Your Knowledge on JavaScript Execution Context
Bonus: Practical Application!
Aaj hi JavaScript Execution Context ka concept samajhne ki koshish karein aur apne JavaScript code ko aur bhi behtar banayein!
JavaScript Execution Context ko sahi tareeke se samajhne ke liye iske different phases jaise Creation Phase, Execution Phase, aur concepts jaise Variable Object, Scope Chain, aur this keyword ka upayog karein. Yeh concepts aapko JavaScript ka internal mechanism samajhne mein madad karenge, jisse aapka coding level ek next step tak pahuch sakta hai!