𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀، 𝗣𝗿𝗼𝗰𝗲𝘀𝘀𝗲𝘀، اور 𝗘𝘅𝗲𝗰𝘂𝘁𝗶𝗼𝗻
JavaScript میں مہارت حاصل کرنے کے لیے یہ سمجھنا ضروری ہے کہ کوڈ کیسے چلتا ہے۔
یہاں وہ بنیادی تصورات ہیں جنہیں آپ کو جاننے کی ضرورت ہے۔
𝟭. 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗙𝘂𝗻𝗰𝘁𝗶𝗼𝗻𝘀 𝗸𝗶 𝟱 𝗔𝗾𝘀𝗮𝗺
- Named Function: ایک مخصوص نام استعمال کرتا ہے۔ یہ آپ کو غلطیوں (errors) کو تیزی سے ڈی بگ (debug) کرنے میں مدد دیتا ہے۔
- Anonymous Function: اس کا کوئی نام نہیں ہوتا۔ آپ انہیں callbacks یا variable assignments کے لیے استعمال کرتے ہیں۔
- Function Expression: آپ ایک فنکشن کو variable کے طور پر تفویض (assign) کرتے ہیں۔
- Arrow Function: => علامت کا استعمال کرتے ہوئے ایک مختصر سنٹیکس (syntax) ہے۔ یہ
thisکی ورڈ کو مختلف طریقے سے ہینڈل کرتا ہے۔ - IIFE: جیسے ہی آپ اسے ڈیفائن کرتے ہیں، یہ چل پڑتا ہے۔ یہ آپ کے کوڈ کو الگ تھلگ (isolated) رکھتا ہے۔
𝟮. 𝗣𝗿𝗼𝗰𝗲𝘀𝘀 بمقابلہ 𝗧𝗵𝗿𝗲𝗮𝗱
Process ایک چلتا ہوا پروگرام ہے۔ ہر process کی اپنی میموری ہوتی ہے۔ اگر Chrome کریش ہو جائے، تب بھی Spotify چلتا رہتا ہے کیونکہ وہ الگ الگ processes ہیں۔
Thread ایک process کے اندر ایک چھوٹی اکائی (unit) ہے۔ Threads ایک ہی میموری کو شیئر کرتے ہیں۔ یہ انہیں processes کے مقابلے میں تیز اور ہلکا بناتا ہے۔
𝟯. 𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 بمقابلہ 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀
JavaScript single-threaded ہے۔ یہ عام طور پر ایک وقت میں ایک ہی ٹاسک چلاتا ہے۔
Synchronous Execution: ٹاسک ایک سخت ترتیب میں چلتے ہیں۔ اگلی لائن موجودہ لائن کے مکمل ہونے کا انتظار کرتی ہے۔ اگر کوئی ٹاسک بہت زیادہ وقت لے لے تو یہ آپ کی ایپ کو سست کر سکتا ہے۔
Asynchronous Execution: ٹاسک ابھی شروع ہو سکتے ہیں اور بعد میں مکمل ہو سکتے ہیں۔ یہ آپ کے کوڈ کو بلاک (block) ہونے سے روکتا ہے۔
یہ کیسے کام کرتا ہے:
- Call Stack آپ کے موجودہ ٹاسکس کو ہینڈل کرتا ہے۔
- Web APIs پس منظر (background) میں ٹائمرز یا ڈیٹا کی درخواستوں جیسے طویل ٹاسکس کو سنبھالتی ہیں۔
- Callback Queue مکمل شدہ ٹاسکس کو محفوظ رکھتی ہے۔
- Event Loop جب اسٹیک خالی ہو جاتا ہے تو ٹاسکس کو کیو (queue) سے واپس اسٹیک میں منتقل کرتا ہے۔
Asynchronous بہاؤ (flow) کی مثال:
- "Hi" لاگ (log) کریں
- 2 سیکنڈ کا ٹائمر شروع کریں
- "End" لاگ کریں
- (2 سیکنڈ گزرنے کے بعد) "Vicky" لاگ کریں
کوڈ ٹائمر کا انتظار نہیں کرتا۔ یہ فوری طور پر "End" پر چلا جاتا ہے۔
اختیاری لرننگ کمیونٹی: https://t.me/GyaanSetuAi