JavaScript ਫੰਕਸ਼ਨਾਂ, ਥ੍ਰੈਡਸ (Threads), ਅਤੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ (Execution)
JavaScript ਦੇ ਮੂਲ ਸਿਧਾਂਤਾਂ (fundamentals) ਨੂੰ ਸਮਝਣਾ ਤੁਹਾਨੂੰ ਬਿਹਤਰ ਕੋਡ ਲਿਖਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ। ਇੱਥੇ ਫੰਕਸ਼ਨਾਂ, ਪ੍ਰੋਸੈਸਾਂ, ਥ੍ਰੈਡਸ ਅਤੇ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਸ਼ੈਲੀਆਂ ਦਾ ਵੇਰਵਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।
JavaScript ਫੰਕਸ਼ਨਾਂ ਦੀਆਂ 5 ਕਿਸਮਾਂ
- Named Function: ਇੱਕ ਖਾਸ ਨਾਮ ਵਾਲਾ ਫੰਕਸ਼ਨ। ਇਹ ਡੀਬੱਗਿੰਗ (debugging) ਅਤੇ ਦੁਬਾਰਾ ਵਰਤੋਂ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।
- Anonymous Function: ਬਿਨਾਂ ਕਿਸੇ ਨਾਮ ਵਾਲਾ ਫੰਕਸ਼ਨ। ਤੁਸੀਂ ਅਕਸਰ ਇਹਨਾਂ ਨੂੰ ਕਾਲਬੈਕਸ (callbacks) ਵਜੋਂ ਵਰਤਦੇ ਹੋ।
- Function Expression: ਤੁਸੀਂ ਇੱਕ ਵੇਰੀਏਬਲ ਨੂੰ ਫੰਕਸ਼ਨ ਅਸਾਈਨ ਕਰਦੇ ਹੋ। ਤੁਸੀਂ ਉਸ ਵੇਰੀਏਬਲ ਦੇ ਨਾਮ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇਸਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ।
- Arrow Function: => ਸਿੰਬਲ ਦੀ ਵਰਤੋਂ ਕਰਨ ਵਾਲਾ ਇੱਕ ਛੋਟਾ ਸਿੰਟੈਕਸ। ਇਹ 'this' ਨੂੰ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲਦਾ ਹੈ।
- IIFE: ਇੱਕ ਅਜਿਹਾ ਫੰਕਸ਼ਨ ਜੋ ਪਰਿਭਾਸ਼ਿਤ (define) ਕਰਦੇ ਹੀ ਚੱਲ ਜਾਂਦਾ ਹੈ। ਇਹ ਇੱਕ ਪ੍ਰਾਈਵੇਟ ਸਕੋਪ (private scope) ਬਣਾਉਂਦਾ ਹੈ।
Process ਬਨਾਮ Thread
ਇੱਕ Process ਤੁਹਾਡੇ ਕੰਪਿਊਟਰ 'ਤੇ ਚੱਲ ਰਿਹਾ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਹੈ।
- ਇਸਦੀ ਆਪਣੀ ਮੈਮੋਰੀ ਹੁੰਦੀ ਹੈ।
- ਇਸਦੀ ਇੱਕ ਵਿਲੱਖਣ ID ਹੁੰਦੀ ਹੈ ਜਿਸਨੂੰ PID ਕਿਹਾ ਜਾਂਦਾ ਹੈ।
- ਜੇਕਰ ਇੱਕ process ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਦੂਜੇ ਚੱਲਦੇ ਰਹਿੰਦੇ ਹਨ।
- ਉਦਾਹਰਨ: Chrome ਅਤੇ Spotify ਵੱਖ-ਵੱਖ processes ਹਨ।
ਇੱਕ Thread ਇੱਕ process ਦੇ ਅੰਦਰ ਇੱਕ ਛੋਟੀ ਇਕਾਈ ਹੈ।
- Threads ਇੱਕ process ਦੇ ਅੰਦਰ ਇੱਕੋ ਮੈਮੋਰੀ ਸਾਂਝੀ ਕਰਦੇ ਹਨ।
- ਇਹ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਕਈ ਕੰਮ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹਨ।
- ਉਦਾਹਰਨ: Chrome ਆਵਾਜ਼ ਚਲਾਉਂਦੇ ਸਮੇਂ ਪੇਜ ਨੂੰ ਰੈਂਡਰ (render) ਕਰਨ ਲਈ ਕਈ ਥ੍ਰੈਡਸ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
Synchronous ਬਨਾਮ Asynchronous
JavaScript single-threaded ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਇਹ ਇੱਕ ਸਮੇਂ ਵਿੱਚ ਇੱਕ ਹੀ ਕੰਮ ਸੰਭਾਲਦਾ ਹੈ।
Synchronous Execution:
- ਕੰਮ ਇੱਕ ਤੋਂ ਬਾਅਦ ਇੱਕ ਚੱਲਦੇ ਹਨ।
- ਹਰ ਲਾਈਨ ਪਿਛਲੀ ਲਾਈਨ ਦੇ ਖਤਮ ਹੋਣ ਦੀ ਉਡੀਕ ਕਰਦੀ ਹੈ।
- ਇੱਕ ਹੌਲੀ ਕੰਮ ਬਾਕੀ ਸਭ ਕੁਝ ਚੱਲਣ ਤੋਂ ਰੋਕ ਸਕਦਾ ਹੈ।
Asynchronous Execution:
- ਕੰਮ ਹੁਣ ਸ਼ੁਰੂ ਹੋ ਸਕਦੇ ਹਨ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਖਤਮ ਹੋ ਸਕਦੇ ਹਨ।
- ਇਹ ਤੁਹਾਡੇ ਕੋਡ ਦੇ ਬਾਕੀ ਹਿੱਸੇ ਨੂੰ ਰੋਕਦਾ (block) ਨਹੀਂ ਹੈ।
- ਇਹ Event Loop ਰਾਹੀਂ ਕੰਮ ਕਰਦਾ ਹੈ।
- ਬ੍ਰਾਊਜ਼ਰ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਟਾਈਮਰ ਜਾਂ ਡੇਟਾ ਫੈਚਿੰਗ (data fetching) ਵਰਗੇ ਕੰਮਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ Web APIs ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
- ਇੱਕ ਵਾਰ ਬੈਕਗ੍ਰਾਊਂਡ ਕੰਮ ਖਤਮ ਹੋ ਜਾਣ 'ਤੇ, Event Loop ਇਸਨੂੰ ਚਲਾਉਣ ਲਈ ਵਾਪਸ ਸਟੈਕ (stack) ਵਿੱਚ ਪਾ ਦਿੰਦਾ ਹੈ।