JavaScript فنکشنز، تھریڈز، اور ایگزیکیوشن
JavaScript کی بنیادی باتوں کو سمجھنا آپ کو بہتر کوڈ لکھنے میں مدد دیتا ہے۔ یہاں فنکشنز، پروسیسز، تھریڈز اور ایگزیکیوشن کے انداز کا خلاصہ دیا گیا ہے۔
JavaScript فنکشنز کی 5 اقسام
- Named Function: ایک مخصوص نام والا فنکشن۔ یہ ڈی بگنگ (debugging) اور دوبارہ استعمال میں مدد دیتا ہے۔
- Anonymous Function: بغیر کسی نام کے فنکشن۔ آپ اکثر انہیں کال بیکس (callbacks) کے طور پر استعمال کرتے ہیں۔
- Function Expression: آپ ایک فنکشن کو ویری ایبل (variable) کے طور پر تفویض کرتے ہیں۔ آپ اسے اسی ویری ایبل کے نام سے کال کرتے ہیں۔
- Arrow Function:
=>علامت کا استعمال کرتے ہوئے ایک مختصر سنٹیکس (syntax)۔ یہ 'this' کو مختلف طریقے سے ہینڈل کرتا ہے۔ - IIFE: ایک ایسا فنکشن جو تعریف (define) کرتے ہی چل پڑتا ہے۔ یہ ایک پرائیویٹ اسکوپ (private scope) تخلیق کرتا ہے۔
Process بمقابلہ Thread
ایک Process آپ کے کمپیوٹر پر چلنے والا ایک پروگرام ہے۔
- اس کی اپنی میموری ہوتی ہے۔
- اس کی ایک منفرد آئی ڈی ہوتی ہے جسے PID کہا جاتا ہے۔
- اگر ایک پروسیس کریش ہو جائے تو دوسرے چلتے رہتے ہیں۔
- مثال: Chrome اور Spotify الگ الگ پروسیسز ہیں۔
ایک Thread ایک پروسیس کے اندر ایک چھوٹا یونٹ ہے۔
- تھریڈز ایک پروسیس کے اندر ایک ہی میموری شیئر کرتے ہیں۔
- یہ ایک پروگرام کو ایک ہی وقت میں کئی کام کرنے کی اجازت دیتے ہیں۔
- مثال: Chrome آواز چلاتے ہوئے پیج کو رینڈر کرنے کے لیے متعدد تھریڈز کا استعمال کرتا ہے۔
Synchronous بمقابلہ Asynchronous
JavaScript سنگل تھریڈڈ (single-threaded) ہے۔ اس کا مطلب ہے کہ یہ ایک وقت میں ایک ہی ٹاسک کو ہینڈل کرتا ہے۔
Synchronous Execution:
- ٹاسک ایک کے بعد ایک چلتے ہیں۔
- ہر لائن پچھلی لائن کے مکمل ہونے کا انتظار کرتی ہے۔
- ایک سست ٹاسک باقی تمام کاموں کو رکنے پر مجبور کر سکتا ہے۔
Asynchronous Execution:
- ٹاسک ابھی شروع ہو سکتے ہیں اور بعد میں مکمل ہو سکتے ہیں۔
- یہ آپ کے باقی کوڈ کو بلاک نہیں کرتا۔
- یہ Event Loop کے ذریعے کام کرتا ہے۔
- براؤزر بیک گراؤنڈ میں ٹائمرز یا ڈیٹا فیچنگ جیسے ٹاسک سنبھالنے کے لیے Web APIs کا استعمال کرتا ہے۔
- جب ایک بیک گراؤنڈ ٹاسک مکمل ہو جاتا ہے، تو Event Loop اسے چلانے کے لیے واپس اسٹیک (stack) میں بھیج دیتا ہے۔