JavaScript ഫങ്ക്ഷനുകൾ, ത്രെഡുകൾ, എക്സിക്യൂഷൻ
JavaScript അടിസ്ഥാനതത്വങ്ങൾ മനസ്സിലാക്കുന്നത് മികച്ച കോഡ് എഴുതാൻ നിങ്ങളെ സഹായിക്കും. ഫങ്ക്ഷനുകൾ, പ്രോസസ്സുകൾ, ത്രെഡുകൾ, എക്സിക്യൂഷൻ രീതികൾ എന്നിവയുടെ ഒരു വിശദീകരണം താഴെ നൽകുന്നു.
5 തരം JavaScript ഫങ്ക്ഷനുകൾ
- Named Function: ഒരു പ്രത്യേക പേരുള്ള ഫങ്ക്ഷൻ. ഇത് ഡീബഗ്ഗിംഗിനും (debugging) വീണ്ടും ഉപയോഗിക്കാനും സഹായിക്കുന്നു.
- Anonymous Function: പേര് ഇല്ലാത്ത ഒരു ഫങ്ക്ഷൻ. ഇവ പലപ്പോഴും callback ആയി ഉപയോഗിക്കുന്നു.
- Function Expression: നിങ്ങൾ ഒരു ഫങ്ക്ഷനെ ഒരു വേരിയബിളിലേക്ക് (variable) നൽകുന്നു. ആ വേരിയബിൾ പേര് ഉപയോഗിച്ച് നിങ്ങൾക്ക് അതിനെ വിളിക്കാം.
- Arrow Function: => ചിഹ്നം ഉപയോഗിച്ചുള്ള ഒരു ലഘുവായ രീതിയാണിത്. ഇത് 'this' എന്നതിനെ വ്യത്യസ്തമായി കൈകാര്യം ചെയ്യുന്നു.
- IIFE: നിങ്ങൾ നിർവചിച്ച ഉടൻ തന്നെ പ്രവർത്തിക്കുന്ന ഒരു ഫങ്ക്ഷൻ. ഇത് ഒരു പ്രൈവറ്റ് സ്കോപ്പ് (private scope) സൃഷ്ടിക്കുന്നു.
Process vs. Thread
ഒരു പ്രോസസ് (Process) എന്നത് നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ പ്രവർത്തിക്കുന്ന ഒരു പ്രോഗ്രാം ആണ്.
- ഇതിന് സ്വന്തമായി മെമ്മറി ഉണ്ട്.
- ഇതിന് PID എന്ന് വിളിക്കുന്ന ഒരു പ്രത്യേക ഐഡി ഉണ്ട്.
- ഒരു പ്രോസസ് തകരാറിലായാലും (crash), മറ്റുള്ളവ പ്രവർത്തിച്ചുകൊണ്ടിരിക്കും.
- ഉദാഹരണം: Chrome-ഉം Spotify-ഉം വ്യത്യസ്ത പ്രോസസ്സുകളാണ്.
ഒരു പ്രോസസിനുള്ളിലെ ചെറിയൊരു യൂണിറ്റാണ് ത്രെഡ് (Thread).
- ഒരു പ്രോസസിനുള്ളിലെ ത്രെഡുകൾ ഒരേ മെമ്മറി പങ്കിടുന്നു.
- ഒരേസമയം പല കാര്യങ്ങൾ ചെയ്യാൻ ഇവ ഒരു പ്രോഗ്രാമിനെ അനുവദിക്കുന്നു.
- ഉദാഹരണം: ശബ്ദം പ്ലേ ചെയ്യുന്നതിനോടൊപ്പം ഒരു പേജ് റെൻഡർ ചെയ്യാനും Chrome ഒന്നിലധികം ത്രെഡുകൾ ഉപയോഗിക്കുന്നു.
Synchronous vs. Asynchronous
JavaScript ഒരു single-threaded ആണ്. അതായത്, ഇത് ഒരേസമയം ഒരു ടാസ്ക് മാത്രമേ കൈകാര്യം ചെയ്യുകയുള്ളൂ.
Synchronous Execution:
- ടാസ്ക്കുകൾ ഓരോന്നായി നടക്കുന്നു.
- ഓരോ വരിയും തൊട്ടുമുമ്പുള്ള വരി പൂർത്തിയാകുന്നത് വരെ കാത്തിരിക്കുന്നു.
- ഒരു സാവധാനത്തിലുള്ള ടാസ്ക് മറ്റെല്ലാ കാര്യങ്ങളും തടസ്സപ്പെടുത്തിയേക്കാം.
Asynchronous Execution:
- ടാസ്ക്കുകൾ ഇപ്പോൾ തുടങ്ങുകയും പിന്നീട് പൂർത്തിയാവുകയും ചെയ്യാം.
- ഇത് നിങ്ങളുടെ കോഡിന്റെ ബാക്കി ഭാഗങ്ങളെ തടസ്സപ്പെടുത്തില്ല.
- ഇത് Event Loop വഴിയാണ് പ്രവർത്തിക്കുന്നത്.
- ടൈമറുകൾ അല്ലെങ്കിൽ ഡാറ്റാ ഫെച്ചിംഗ് (data fetching) പോലുള്ള ടാസ്ക്കുകൾ ബാക്ക്ഗ്രൗണ്ടിൽ കൈകാര്യം ചെയ്യാൻ ബ്രൗസർ Web APIs ഉപയോഗിക്കുന്നു.
- ഒരു ബാക്ക്ഗ്രൗണ്ട് ടാസ്ക് പൂർത്തിയായിക്കഴിഞ്ഞാൽ, അത് പ്രവർത്തിപ്പിക്കുന്നതിനായി Event Loop അതിനെ വീണ്ടും സ്റ്റാക്കിലേക്ക് (stack) എത്തിക്കുന്നു.