Funksheni, Threads, na Utekelezaji za JavaScript
Kuelewa misingi ya JavaScript kunakusaidia kuandika kodi bora zaidi. Hapa kuna mchanganuo wa funksheni, michakato (processes), threads, na mitindo ya utekelezaji (execution styles).
Aina 5 za Funksheni za JavaScript
- Named Function: Funksheni yenye jina maalum. Inasaidia katika kutatua makosa (debugging) na kutumia tena.
- Anonymous Function: Funksheni isiyo na jina. Mara nyingi hutumika kama callbacks.
- Function Expression: Unateua funksheni kwenye variable. Unaiita kwa kutumia jina hilo la variable.
- Arrow Function: Sintaksia fupi inayotumia alama ya =>. Inashughulikia 'this' kwa namna tofauti.
- IIFE: Funksheni inayojiendesha mara tu unapoitengeneza. Inatengeneza mazingira ya faragha (private scope).
Process dhidi ya Thread
Process ni programu inayojiendesha kwenye kompyuta yako.
- Ina kumbukumbu (memory) yake yenyewe.
- Ina utambulisho wa kipekee unaoitwa PID.
- Ikiwa process moja itafeli (crash), nyingine zinaendelea kufanya kazi.
- Mfano: Chrome na Spotify ni processes tofauti.
Thread ni kitengo kidogo ndani ya process.
- Threads zinashiriki kumbukumbu (memory) ile ile ndani ya process.
- Zinairuhusu programu kufanya mambo mengi kwa wakati mmoja.
- Mfano: Chrome hutumia threads nyingi kuonyesha ukurasa (render) huku ikicheza sauti.
Synchronous dhidi ya Asynchronous
JavaScript ina thread moja tu (single-threaded). Hii ina maana inashughulikia kazi moja kwa wakati mmoja.
Synchronous Execution:
- Kazi hufanyika moja baada ya nyingine.
- Kila mstari unasubiri mstari uliopita umalize.
- Kazi inayochelewa inaweza kuzuia mambo mengine yote yasifanye kazi.
Asynchronous Execution:
- Kazi zinaweza kuanza sasa na kumalizika baadaye.
- Haizuia (block) sehemu nyingine ya kodi yako.
- Hii hufanya kazi kupitia Event Loop.
- Kivinjari (browser) hutumia Web APIs kushughulikia kazi kama vile kuanzisha muda (timers) au kuchukua data (data fetching) kwa nyuma (in the background).
- Mara tu kazi ya nyuma inapomalizika, Event Loop inairudisha kwenye stack ili ianze kufanya kazi.