JavaScript ഫങ്ക്ഷനുകൾ, പ്രോസസ്സുകൾ, എക്സിക്യൂഷൻ
JavaScript മാസ്റ്റർ ചെയ്യാൻ കോഡ് എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്ന് മനസ്സിലാക്കേണ്ടതുണ്ട്.
നിങ്ങൾ അറിഞ്ഞിരിക്കേണ്ട പ്രധാന ആശയങ്ങൾ താഴെ പറയുന്നവയാണ്.
1. 5 തരം JavaScript ഫങ്ക്ഷനുകൾ
- Named Function: ഒരു പ്രത്യേക പേര് ഉപയോഗിക്കുന്നു. ഇത് പിശകുകൾ (errors) വേഗത്തിൽ കണ്ടെത്താൻ സഹായിക്കുന്നു.
- Anonymous Function: പേര് ഇല്ലാത്തവയാണ്. ഇവ callback-കൾക്കോ വേരിയബിൾ അസൈൻമെന്റുകൾക്കോ വേണ്ടി ഉപയോഗിക്കുന്നു.
- Function Expression: ഒരു ഫങ്ക്ഷനെ ഒരു വേരിയബിളിലേക്ക് അസൈൻ ചെയ്യുന്നു.
- Arrow Function:
=>ചിഹ്നം ഉപയോഗിച്ചുള്ള ലളിതമായ രീതിയാണിത്. ഇത്thisകീവേഡ് വ്യത്യസ്തമായി കൈകാര്യം ചെയ്യുന്നു. - IIFE: നിർവചിച്ച ഉടൻ തന്നെ പ്രവർത്തിക്കുന്നു. ഇത് നിങ്ങളുടെ കോഡിനെ മറ്റുള്ളവയിൽ നിന്ന് വേർതിരിച്ചു നിർത്തുന്നു.
2. Process vs. Thread
ഒരു പ്രോസസ് (Process) എന്നത് പ്രവർത്തിച്ചുകൊണ്ടിരിക്കുന്ന ഒരു പ്രോഗ്രാം ആണ്. ഓരോ പ്രോസസ്സിനും അതിന്റേതായ മെമ്മറി ഉണ്ടായിരിക്കും. Chrome ക്രാഷ് ആയാലും Spotify പ്രവർത്തിച്ചുകൊണ്ടിരിക്കും, കാരണം അവ വ്യത്യസ്ത പ്രോസസ്സുകളാണ്.
ഒരു പ്രോസസ്സിനുള്ളിലെ ചെറിയൊരു യൂണിറ്റാണ് ത്രെഡ് (Thread). ത്രെഡുകൾ ഒരേ മെമ്മറി പങ്കിടുന്നു. ഇത് അവയെ പ്രോസസ്സുകളെക്കാൾ വേഗതയുള്ളതും ഭാരം കുറഞ്ഞതുമാക്കുന്നു.
3. Synchronous vs. Asynchronous
JavaScript ഒരു സിംഗിൾ-ത്രെഡഡ് (single-threaded) സംവിധാനമാണ്. ഇത് സാധാരണയായി ഒരു സമയം ഒരു ടാസ്ക് മാത്രമേ പ്രവർത്തിപ്പിക്കുകയുള്ളൂ.
Synchronous Execution: ടാസ്കുകൾ കൃത്യമായ ക്രമത്തിൽ പ്രവർത്തിക്കുന്നു. നിലവിലെ വരി പൂർത്തിയാകുന്നത് വരെ അടുത്ത വരി കാത്തുനിൽക്കുന്നു. ഒരു ടാസ്ക് എടുക്കാൻ കൂടുതൽ സമയമെടുത്താൽ ഇത് നിങ്ങളുടെ ആപ്പിന്റെ വേഗത കുറയ്ക്കാൻ കാരണമാകും.
Asynchronous Execution: ടാസ്കുകൾ ഇപ്പോൾ തുടങ്ങുകയും പിന്നീട് പൂർത്തിയാവുകയും ചെയ്യാം. ഇത് നിങ്ങളുടെ കോഡ് ബ്ലോക്ക് ചെയ്യുന്നത് തടയുന്നു.
ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു:
- Call Stack നിങ്ങളുടെ നിലവിലെ ടാസ്കുകളെ കൈകാര്യം ചെയ്യുന്നു.
- Web APIs ടൈമറുകൾ അല്ലെങ്കിൽ ഡാറ്റാ റിക്വസ്റ്റുകൾ പോലുള്ള ദീർഘനേരം എടുക്കുന്ന ടാസ്കുകളെ ബാക്ക്ഗ്രൗണ്ടിൽ കൈകാര്യം ചെയ്യുന്നു.
- Callback Queue പൂർത്തിയായ ടാസ്കുകളെ സൂക്ഷിക്കുന്നു.
- Event Loop സ്റ്റാക്ക് കാലിയാകുമ്പോൾ ക്യൂവിൽ നിന്നുള്ള ടാസ്കുകളെ തിരികെ സ്റ്റാക്കിലേക്ക് മാറ്റുന്നു.
Asynchronous ഫ്ലോയുടെ ഉദാഹരണം:
- "Hi" എന്ന് ലോഗ് ചെയ്യുക
- 2 സെക്കൻഡ് ടൈമർ തുടങ്ങുക
- "End" എന്ന് ലോഗ് ചെയ്യുക
- (2 സെക്കൻഡ് കഴിയുന്നു) "Vicky" എന്ന് ലോഗ് ചെയ്യുക
കോഡ് ടൈമറിനായി കാത്തുനിൽക്കുന്നില്ല. അത് ഉടൻ തന്നെ "End" എന്നതിലേക്ക് മാറുന്നു.
Optional learning community: https://t.me/GyaanSetuAi