JavaScript Functions, Processes, and Execution
JavaScript में महारत हासिल करने के लिए यह समझना ज़रूरी है कि कोड कैसे चलता है।
यहाँ वे मुख्य अवधारणाएँ (concepts) दी गई हैं जिन्हें आपको जानना आवश्यक है।
1. JavaScript Functions के 5 प्रकार
- Named Function: इसमें एक विशिष्ट नाम होता है। यह आपको त्रुटियों (errors) को जल्दी से डीबग करने में मदद करता है।
- Anonymous Function: इसका कोई नाम नहीं होता। आप इनका उपयोग कॉलबैक (callbacks) या वेरिएबल असाइनमेंट के लिए करते हैं।
- Function Expression: आप एक वेरिएबल को फंक्शन असाइन करते हैं।
- Arrow Function: यह
=>सिंबल का उपयोग करने वाला एक संक्षिप्त सिंटैक्स है। यहthisकीवर्ड को अलग तरह से हैंडल करता है। - IIFE: यह परिभाषित करते ही तुरंत चल जाता है। यह आपके कोड को आइसोलेट (isolated) रखता है।
2. Process बनाम Thread
एक Process एक चलता हुआ प्रोग्राम है। प्रत्येक प्रोसेस की अपनी मेमोरी होती है। यदि Chrome क्रैश हो जाता है, तो Spotify चलता रहता है क्योंकि वे अलग-अलग प्रोसेसेस हैं।
एक Thread एक प्रोसेस के अंदर एक छोटी इकाई (unit) है। Threads एक ही मेमोरी साझा करते हैं। यह उन्हें प्रोसेसेस की तुलना में तेज़ और हल्का बनाता है।
3. Synchronous बनाम Asynchronous
JavaScript सिंगल-थ्रेडेड (single-threaded) है। यह आमतौर पर एक समय में एक ही कार्य चलाता है।
Synchronous Execution: कार्य एक सख्त क्रम में चलते हैं। अगली लाइन वर्तमान लाइन के समाप्त होने का इंतज़ार करती है। यदि किसी कार्य में बहुत अधिक समय लगता है, तो यह आपके ऐप को धीमा कर सकता है।
Asynchronous Execution: कार्य अभी शुरू हो सकते हैं और बाद में समाप्त हो सकते हैं। यह आपके कोड को ब्लॉक होने से रोकता है।
यह कैसे काम करता है:
- Call Stack आपके वर्तमान कार्यों को संभालता है।
- Web APIs बैकग्राउंड में टाइमर या डेटा रिक्वेस्ट जैसे लंबे कार्यों को संभालते हैं।
- Callback Queue समाप्त हुए कार्यों को रखता है।
- Event Loop जब स्टैक खाली होता है, तो कार्यों को क्यू (queue) से वापस स्टैक में ले जाता है।
Asynchronous फ्लो का उदाहरण:
- "Hi" लॉग करें
- 2 सेकंड के लिए टाइमर शुरू करें
- "End" लॉग करें
- (2 सेकंड बीतने के बाद) "Vicky" लॉग करें
कोड टाइमर का इंतज़ार नहीं करता है। यह तुरंत "End" पर चला जाता है।
Optional learning community: https://t.me/GyaanSetuAi