JavaScript ಫಂಕ್ಷನ್ಗಳು, ಪ್ರಕ್ರಿಯೆಗಳು ಮತ್ತು ಎಕ್ಸಿಕ್ಯೂಷನ್
JavaScript ಅನ್ನು ಪರಿಣಿತರಾಗಿ ಕಲಿಯಲು ಕೋಡ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅಗತ್ಯವಾಗಿದೆ.
ನೀವು ತಿಳಿಯಬೇಕಾದ ಪ್ರಮುಖ ಪರಿಕಲ್ಪನೆಗಳು ಇಲ್ಲಿವೆ.
೧. JavaScript ಫಂಕ್ಷನ್ಗಳ ೫ ವಿಧಗಳು
- Named Function: ಒಂದು ನಿರ್ದಿಷ್ಟ ಹೆಸರನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ದೋಷಗಳನ್ನು (errors) ಶೀಘ್ರವಾಗಿ ಪತ್ತೆಹಚ್ಚಲು (debug) ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- Anonymous Function: ಯಾವುದೇ ಹೆಸರಿರುವುದಿಲ್ಲ. ಇವುಗಳನ್ನು ಕಾಲ್ಬ್ಯಾಕ್ಗಳು (callbacks) ಅಥವಾ ವೇರಿಯೇಬಲ್ ಅಸೈನ್ಮೆಂಟ್ಗಳಿಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
- Function Expression: ನೀವು ಒಂದು ಫಂಕ್ಷನ್ ಅನ್ನು ವೇರಿಯೇಬಲ್ಗೆ ನಿಯೋಜಿಸುತ್ತೀರಿ.
- Arrow Function:
=>ಚಿಹ್ನೆಯನ್ನು ಬಳಸುವ ಸಂಕ್ಷಿಪ್ತ ಸಿಂಟ್ಯಾಕ್ಸ್ (syntax). ಇದುthisಕೀವರ್ಡ್ ಅನ್ನು ವಿಭಿನ್ನವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ. - IIFE: ನೀವು ಇದನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿದ ತಕ್ಷಣವೇ ಚಲಿಸುತ್ತದೆ. ಇದು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಪ್ರತ್ಯೇಕವಾಗಿಡುತ್ತದೆ.
೨. ಪ್ರಕ್ರಿಯೆ (Process) vs. ಥ್ರೆಡ್ (Thread)
Process ಎಂದರೆ ಚಾಲನೆಯಲ್ಲಿರುವ ಒಂದು ಪ್ರೋಗ್ರಾಂ. ಪ್ರತಿಯೊಂದು ಪ್ರಕ್ರಿಯೆಯು ತನ್ನದೇ ಆದ ಮೆಮೊರಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಒಂದು ವೇಳೆ Chrome ಕ್ರ್ಯಾಶ್ ಆಗුවರೂ, Spotify ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ ಏಕೆಂದರೆ ಅವು ಪ್ರತ್ಯೇಕ ಪ್ರಕ್ರಿಯೆಗಳಾಗಿವೆ.
Thread ಎಂಬುದು ಒಂದು ಪ್ರಕ್ರಿಯೆಯ ಒಳಗಿರುವ ಸಣ್ಣ ಘಟಕವಾಗಿದೆ. ಥ್ರೆಡ್ಗಳು ಒಂದೇ ಮೆಮೊರಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ. ಇದು ಅವುಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗಳಿಗಿಂತ ವೇಗವಾಗಿ ಮತ್ತು ಹಗುರವಾಗಿಸುತ್ತದೆ.
೩. ಸಿಂಕ್ರೋನಸ್ (Synchronous) vs. ಅಸಿಂಕ್ರೋನಸ್ (Asynchronous)
JavaScript ಸಿಂಗಲ್-ಥ್ರೆಡೆಡ್ ಆಗಿದೆ. ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದು ಸಮಯದಲ್ಲಿ ಒಂದು ಕೆಲಸವನ್ನು ಮಾತ್ರ ಮಾಡುತ್ತದೆ.
Synchronous Execution: ಕೆಲಸಗಳು ಕಟ್ಟುನಿಟ್ಟಾದ ಕ್ರಮದಲ್ಲಿ ನಡೆಯುತ್ತವೆ. ಮುಂದಿನ ಸಾಲು ಪ್ರಸ್ತುತ ಸಾಲು ಮುಗಿಯುವವರೆಗೆ ಕಾಯುತ್ತದೆ. ಒಂದು ಕೆಲಸವು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವಲ್ಲಿ, ಇದು ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ವೇಗವನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು.
Asynchronous Execution: ಕೆಲಸಗಳು ಈಗ ಪ್ರಾರಂಭವಾಗಿ ನಂತರ ಮುಗಿಯಬಹುದು. ಇದು ನಿಮ್ಮ ಕೋಡ್ ಬ್ಲಾಕ್ ಆಗದಂತೆ ತಡೆಯುತ್ತದೆ.
ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- Call Stack ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಕೆಲಸಗಳನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ.
- Web APIs ಟೈಮರ್ಗಳು ಅಥವಾ ಡೇಟಾ ವಿನಂತಿಗಳಂತಹ ದೀರ್ಘಾವಧಿಯ ಕೆಲಸಗಳನ್ನು ಹಿನ್ನೆಲೆಯಲ್ಲಿ (background) ನಿರ್ವಹಿಸುತ್ತವೆ.
- Callback Queue ಮುಗಿದಿರುವ ಕೆಲಸಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ.
- Event Loop ಕ್ಯೂ (queue) ಖಾಲಿಯಾದಾಗ ಅಲ್ಲಿನ ಕೆಲಸಗಳನ್ನು ಮತ್ತೆ ಸ್ಟ್ಯಾಕ್ಗೆ (stack) ವರ್ಗಾಯಿಸುತ್ತದೆ.
ಅಸಿಂಕ್ರೋನಸ್ ಹರಿವಿನ ಉದಾಹರಣೆ:
- "Hi" ಅನ್ನು ಲಾಗ್ ಮಾಡಿ
- ೨ ಸೆಕೆಂಡುಗಳ ಟೈಮರ್ ಪ್ರಾರಂಭಿಸಿ
- "End" ಅನ್ನು ಲಾಗ್ ಮಾಡಿ
- (೨ ಸೆಕೆಂಡುಗಳು ಕಳೆದ ನಂತರ) "Vicky" ಅನ್ನು ಲಾಗ್ ಮಾಡಿ
ಕೋಡ್ ಟೈಮರ್ ಗಾಗಿ ಕಾಯುವುದಿಲ್ಲ. ಅದು ತಕ್ಷಣವೇ "End" ಗೆ ಚಲಿಸುತ್ತದೆ.
Optional learning community: https://t.me/GyaanSetuAi