JavaScript ਫੰਕਸ਼ਨਾਂ, ਪ੍ਰੋਸੈਸਾਂ ਅਤੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ
JavaScript ਵਿੱਚ ਮਾਹਰ ਹੋਣ ਲਈ ਇਹ ਸਮਝਣਾ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਕੋਡ ਕਿਵੇਂ ਚੱਲਦਾ ਹੈ।
ਇੱਥੇ ਕੁਝ ਮੁੱਖ ਸੰਕਲਪ ਹਨ ਜੋ ਤੁਹਾਨੂੰ ਜਾਣਨ ਦੀ ਲੋੜ ਹੈ।
੧. JavaScript ਫੰਕਸ਼ਨਾਂ ਦੀਆਂ ੫ ਕਿਸਮਾਂ
- Named Function: ਇੱਕ ਖਾਸ ਨਾਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਗਲਤੀਆਂ (errors) ਨੂੰ ਜਲਦੀ ਡੀਬੱਗ (debug) ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।
- Anonymous Function: ਇਸਦਾ ਕੋਈ ਨਾਮ ਨਹੀਂ ਹੁੰਦਾ। ਤੁਸੀਂ ਇਹਨਾਂ ਦੀ ਵਰਤੋਂ ਕਾਲਬੈਕਸ (callbacks) ਜਾਂ ਵੇਰੀਏਬਲ ਅਸਾਈਨਮੈਂਟ ਲਈ ਕਰਦੇ ਹੋ।
- Function Expression: ਤੁਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਵੇਰੀਏਬਲ ਨੂੰ ਅਸਾਈਨ ਕਰਦੇ ਹੋ।
- Arrow Function:
=>ਸਿੰਬਲ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲਾ ਇੱਕ ਛੋਟਾ ਸਿੰਟੈਕਸ। ਇਹthisਕੀਵਰਡ ਨੂੰ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲਦਾ ਹੈ। - IIFE: ਜਿਵੇਂ ਹੀ ਤੁਸੀਂ ਇਸਨੂੰ ਡਿਫਾਈਨ ਕਰਦੇ ਹੋ, ਇਹ ਚੱਲ ਜਾਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਅਲੱਗ (isolated) ਰੱਖਦਾ ਹੈ।
੨. ਪ੍ਰੋਸੈਸ (Process) ਬਨਾਮ ਥ੍ਰੈਡ (Thread)
ਪ੍ਰੋਸੈਸ ਇੱਕ ਚੱਲ ਰਿਹਾ ਪ੍ਰੋਗਰਾਮ ਹੈ। ਹਰੇਕ ਪ੍ਰੋਸੈਸ ਦੀ ਆਪਣੀ ਮੈਮੋਰੀ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ Chrome ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਵੀ Spotify ਚੱਲਦਾ ਰਹਿੰਦਾ ਹੈ ਕਿਉਂਕਿ ਉਹ ਵੱਖਰੇ ਪ੍ਰੋਸੈਸ ਹਨ।
ਥ੍ਰੈਡ ਇੱਕ ਪ੍ਰੋਸੈਸ ਦੇ ਅੰਦਰ ਇੱਕ ਛੋਟੀ ਇਕਾਈ ਹੈ। ਥ੍ਰੈਡ ਇੱਕੋ ਮੈਮੋਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਦੇ ਹਨ। ਇਹ ਉਹਨਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸਾਂ ਨਾਲੋਂ ਤੇਜ਼ ਅਤੇ ਹਲਕਾ ਬਣਾਉਂਦਾ ਹੈ।
੩. ਸਿੰਕਰੋਨਸ (Synchronous) ਬਨਾਮ ਐਸਿੰਕਰੋਨਸ (Asynchronous)
JavaScript ਸਿੰਗਲ-ਥ੍ਰੈਡਡ (single-threaded) ਹੈ। ਇਹ ਆਮ ਤੌਰ 'ਤੇ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਹੀ ਟਾਸਕ ਚਲਾਉਂਦਾ ਹੈ।
Synchronous Execution: ਟਾਸਕ ਇੱਕ ਸਖ਼ਤ ਕ੍ਰਮ ਵਿੱਚ ਚੱਲਦੇ ਹਨ। ਅਗਲੀ ਲਾਈਨ ਮੌਜੂਦਾ ਲਾਈਨ ਦੇ ਖਤਮ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦੀ ਹੈ। ਜੇਕਰ ਕੋਈ ਟਾਸਕ ਬਹੁਤ ਜ਼ਿਆਦਾ ਸਮਾਂ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਤੁਹਾਡੀ ਐਪ ਨੂੰ ਹੌਲੀ ਕਰ ਸਕਦਾ ਹੈ।
Asynchronous Execution: ਟਾਸਕ ਹੁਣ ਸ਼ੁਰੂ ਹੋ ਸਕਦੇ ਹਨ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਖਤਮ ਹੋ ਸਕਦੇ ਹਨ। ਇਹ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਬਲੌਕ (block) ਹੋਣ ਤੋਂ ਰੋਕਦਾ ਹੈ।
ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦਾ ਹੈ:
- Call Stack ਤੁਹਾਡੇ ਮੌਜੂਦਾ ਟਾਸਕਾਂ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ।
- Web APIs ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਟਾਈਮਰ ਜਾਂ ਡੇਟਾ ਰਿਕੁਐਸ ਵਰਗੇ ਲੰਬੇ ਟਾਸਕਾਂ ਨੂੰ ਸੰਭਾਲਦੇ ਹਨ।
- Callback Queue ਖਤਮ ਹੋਏ ਟਾਸਕਾਂ ਨੂੰ ਰੱਖਦਾ ਹੈ।
- Event Loop ਕਤਾਰ (queue) ਤੋਂ ਟਾਸਕਾਂ ਨੂੰ ਵਾਪਸ ਸਟੈਕ (stack) ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਉਹ ਖਾਲੀ ਹੁੰਦਾ ਹੈ।
Asynchronous ਫਲੋਅ ਦੀ ਉਦਾਹਰਣ:
- "Hi" ਲੌਗ ਕਰੋ
- 2 ਸਕਿੰਟ ਲਈ ਟਾਈਮਰ ਸ਼ੁਰੂ ਕਰੋ
- "End" ਲੌਗ ਕਰੋ
- (2 ਸਕਿੰਟ ਬੀਤ ਜਾਣ 'ਤੇ) "Vicky" ਲ