कॉल स्टैक
देखिए कि फ़ंक्शन कॉल कैसे ट्रैक की जाती हैं।
कॉल स्टैक, CoddyKit पर JavaScript Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह JavaScript Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
कॉल स्टैक क्या है
कॉल स्टैक वह तरीका है जिससे JavaScript यह ट्रैक करता है कि वर्तमान में कौन-सा फ़ंक्शन चल रहा है और लौटना कहाँ है। हर फ़ंक्शन कॉल को सबसे ऊपर जोड़ा जाता है; पूरा होने पर उसे हटा दिया जाता है।
यह एक LIFO संरचना है: अंतिम प्रवेश, प्रथम निर्गम।
जोड़ना और हटाना
जब आप किसी फ़ंक्शन को कॉल करते हैं, तो एक स्टैक फ़्रेम जोड़ा जाता है। जब फ़ंक्शन लौटता है, तो फ़्रेम हटा दिया जाता है। कॉल के नेस्ट होने पर लॉग प्रविष्टियों का क्रम देखिए।
function first() {
console.log('first start');
second();
console.log('first end');
}
function second() {
console.log('second');
}
first();क्रिया में LIFO
हाल में कॉल किए गए फ़ंक्शन को उसके नीचे वाले फ़ंक्शन के फिर से चलने से पहले पूरा होना आवश्यक है। अंदर की कॉल पहले पूरी होती है, भले ही वह बाद में शुरू हुई हो।
function a() {
console.log('enter a');
b();
console.log('exit a');
}
function b() {
console.log('enter b');
c();
console.log('exit b');
}
function c() {
console.log('c runs');
}
a();सिंक्रोनस का अर्थ रोकना है
JavaScript एकल थ्रेड पर एक समय में एक ही काम करता है। जब तक स्टैक में फ़्रेम मौजूद रहते हैं, तब तक कोई और काम नहीं चलता। सिंक्रोनस कोड पूरा होने तक रोकता है।
console.log('start');
function busy() {
let sum = 0;
for (let i = 0; i < 1000; i++) sum += i;
return sum;
}
console.log(busy());
console.log('end');लौटाए गए मान नीचे प्रवाहित होते हैं
हर फ़्रेम के हटने पर उसका लौटाया गया मान स्टैक में नीचे प्रतीक्षा कर रहे कॉल करने वाले फ़ंक्शन तक वापस पहुँचता है।
function square(n) {
return n * n;
}
function sumOfSquares(a, b) {
return square(a) + square(b);
}
console.log(sumOfSquares(3, 4));पुनरावृत्ति स्टैक को बढ़ाती है
हर पुनरावर्ती कॉल एक और फ़्रेम जोड़ती है। आधार स्थिति मिलने तक स्टैक बढ़ता रहता है, फिर फ़्रेम दर फ़्रेम खुलता जाता है।
function countdown(n) {
if (n === 0) {
console.log('liftoff');
return;
}
console.log(n);
countdown(n - 1);
}
countdown(3);स्टैक ओवरफ़्लो
स्टैक का आकार सीमित होता है। आधार स्थिति के बिना पुनरावृत्ति फ़्रेम जोड़ती रहती है, जब तक इंजन RangeError: कॉल स्टैक का अधिकतम आकार पार हो गया त्रुटि नहीं देता।
function endless(n) {
return endless(n + 1);
}
try {
endless(1);
} catch (e) {
console.log(e.name);
}निष्पादन का क्रम अनुमानित होता है
स्टैक सख्ती से LIFO और सिंक्रोनस होने के कारण, सिंक्रोनस लॉग का क्रम हमेशा नियत रहता है। आप इसे हाथ से ट्रेस कर सकते हैं।
function outer() {
console.log(1);
inner();
console.log(3);
}
function inner() {
console.log(2);
}
outer();
console.log(4);असिंक्रोनस काम कहाँ आता है
कॉल स्टैक केवल सिंक्रोनस कोड चलाता है। setTimeout जैसे फ़ंक्शन काम को परिवेश को सौंप देते हैं, जो बाद में कॉलबैक को कतारों में रखता है। ये कॉलबैक तभी चलते हैं जब स्टैक खाली हो जाता है।
यही इवेंट लूप की ओर जाने वाला सेतु है।
console.log('A');
setTimeout(() => console.log('B (later)'), 0);
console.log('C');पहले स्टैक का खाली होना आवश्यक है
शून्य मिलीसेकंड वाला टाइमर भी सभी सिंक्रोनस कोड के पूरा होने की प्रतीक्षा करता है। जब तक स्टैक पर फ़्रेम मौजूद रहते हैं, कॉलबैक नहीं चल सकता।
console.log('sync 1');
setTimeout(() => console.log('timeout'), 0);
console.log('sync 2');
console.log('sync 3');कॉल स्टैक क्यों महत्वपूर्ण है
कॉल स्टैक को समझने से पता चलता है कि लंबे सिंक्रोनस लूप पृष्ठ को क्यों जमा देते हैं, पुनरावृत्ति ओवरफ़्लो क्यों कर सकती है और असिंक्रोनस कॉलबैक हमेशा अंत में क्यों चलते हैं। इवेंट लूप की हर बात की यही नींव है।
function compute() {
return [1, 2, 3].reduce((a, b) => a + b, 0);
}
console.log('before');
console.log(compute());
console.log('after');त्वरित जाँच
कॉल स्टैक किस क्रम सिद्धांत का पालन करता है?
पुनरावलोकन: कॉल स्टैक
आपने इंजन के मुख्य निष्पादन तंत्र के बारे में सीखा:
- कॉल स्टैक चल रहे फ़ंक्शन को LIFO क्रम में ट्रैक करता है।
- JavaScript एकल-थ्रेड वाला है और सिंक्रोनस कोड रोकता है।
- पुनरावृत्ति स्टैक को बढ़ाती है और ओवरफ़्लो कर सकती है।
- असिंक्रोनस कॉलबैक स्टैक के खाली होने तक प्रतीक्षा करते हैं, जिससे हम इवेंट लूप तक पहुँचते हैं।
एआई शिक्षक के साथ JavaScript सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 59
- पाठ
- 200
अक्सर पूछे जाने वाले प्रश्न
क्या “कॉल स्टैक” पाठ निःशुल्क है?
हाँ — JavaScript Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कॉल स्टैक” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। JavaScript Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“कॉल स्टैक” में मैं क्या सीखूँगा?
देखिए कि फ़ंक्शन कॉल कैसे ट्रैक की जाती हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ JavaScript Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या JavaScript Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर JavaScript Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“कॉल स्टैक” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस JavaScript Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर JavaScript Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।