Introduction
हेलो दोस्तों आज हम इस post में call stack के बारे में जानगे की javascript में call stack क्या है और वह कैसे work करता है!.
What is call stack or how does it work in javascript?
Javascript में call stack एक mechanism है, वह जब function executions को उसके invoked(call) order form में manage करने के लिए help करता है!. मतलब की जो function execution को उस order में manage करने में मदद करता है जिस order में उन्हें call किया जाता है!.
वह एक stack data structure है जो किसी program में call किये जा रहे function का track रखती है!. वह LastIn, FirstOut (LIFO) principle का पालन करता है!.
जिसका मतलब है की stack में जोड़ा गया last function execution पूरा होने के बाद में सबसे पहले remove किया जायेगा!.
जब भी किसी function को program में call किया जाता है तो उसे call stack में add किया जाता है, और जैसे ही उस function का execution समाप्त होता है उसे call stack से remove कर दिया जाता है!. Javascript engine function execution order का track करने के लिए इस call stack का उपयोग करता है!.
Javascript call stack key points
Single-threaded: Javascript में एक ही call stack होता है, जिसका अर्थ है की वह एक समय में केवल एक funciton execution कर सकता है!.
Synchronous: Javascript engine call stack को synchronous रूप से process करता है!, जिसका अर्थ है की यह अगले function पर जाने से पहले call stack पर सबसे ऊपर वाले funciton को execution करता है!.
Javascript call stack example
Javascript का program कैसे execute होता है वह हम पहले जानेगे!. first-time javascript code का execution start होता तो global execution context create होता है और वह global execution context दो part में होता है first memoery allocation और दूसरा code execution context तो हमारे program में जितने बी वेरिएबल और function होते उसके के लिए memoery allocate करता है!. और दूसरे में हमारा code execution होता है!.
function firstFunction(){ var lable="Gome dev"; firstVariable ="firstVariable"; console.log("firstFunction function a") secondFunction(); } function secondFunction(){ var lable="Gome dev 002"; console.log("SecondFunction function b") thirdFunction(); } function thirdFunction(){ console.log("thirdFunction function c") } var firstVariable; var lable="Gome dev 004"; firstFunction();
ऊपर के example में देख सकते है के जब ऊपर का हमारा program रन होता है तो वह first वह global execution के साथ start होता है!. Global execution context दो part में होता है पहला memory allocation जीएसमे हमारा program के variable और function initiliation होते है. और दूसरा कोड execution जब हमारा firstFunction() call होता है तो वह function खुद का local execution context create करता है!.
जिसमे function के अंदर के variable और function को initialization करता है और फिर code execution context और firstFunction() call होते ही वह call stack में add हो जाता है और इस function के अंदर में secondFunction() को call किया है वह firstFunction() के ऊपर call stack में add होता है और secondFunction() में thirdFunction() call किया है वह call stack में secondFunction() के ऊपर add होता है!.
तो अब function के अंदर function call किया है तो अब last thirdFunction() का execution complate होने के बाद में उसे call stack से remove कर दिया जायेगा ऐसी तरह second और first function का exection complated होने के बाद में उसे call stak से remove कर दिया जायेगा!.
Javascript Stack overflow
The call stack की size limited होती है यदि बहुत सारे function बिना remove किये call stack में add होते जाते है तो हमको “stack overflow” error मिलेगा!.
Example:
function recursiveFunction(){ recursiveFunction(); } recursiveFunction();
ऊपर के example में देख सकते है वह stack overflow का कारन बनेगा क्योकि call stack अपनी capacity से अधिक बढ़ जायेगा जिसके परिणामस्वरूप एक stack overflow की error generate होगी!.
Call stack यह समजने के लिए एक important concepts है की javascript किस तरह से order में function को execution करता है. Function को add और remove करके यह track करता है की क्या execute करना है जिससे उचित execution का order spacify होता है!.