# ਜਾਵਾਸਕ੍ਰਿਪਟ ਬੇਸਿਕਸ: ਮੈਥਡਸ ਅਤੇ ਫੰਕਸ਼ਨ ![JavaScript Basics - Functions](../../../../translated_images/webdev101-js-functions.be049c4726e94f8b7605c36330ac42eeb5cd8ed02bcdd60fdac778174d6cb865.pa.png) > ਸਕੈਚਨੋਟ [Tomomi Imura](https://twitter.com/girlie_mac) ਦੁਆਰਾ ## ਲੈਕਚਰ ਤੋਂ ਪਹਿਲਾਂ ਕਵਿਜ਼ [ਲੈਕਚਰ ਤੋਂ ਪਹਿਲਾਂ ਕਵਿਜ਼](https://ff-quizzes.netlify.app) ਜਦੋਂ ਅਸੀਂ ਕੋਡ ਲਿਖਣ ਬਾਰੇ ਸੋਚਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਹਮੇਸ਼ਾ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਸਾਡਾ ਕੋਡ ਪੜ੍ਹਨ ਯੋਗ ਹੋਵੇ। ਹਾਲਾਂਕਿ ਇਹ ਵਿਰੋਧਭਾਸੀ ਲੱਗਦਾ ਹੈ, ਪਰ ਕੋਡ ਨੂੰ ਲਿਖਣ ਨਾਲ ਕਈ ਵਾਰ ਵਧੇਰੇ ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ। ਡਿਵੈਲਪਰ ਦੇ ਟੂਲਬਾਕਸ ਵਿੱਚ ਇੱਕ ਮੁੱਖ ਸਾਧਨ **ਫੰਕਸ਼ਨ** ਹੈ ਜੋ ਕੋਡ ਨੂੰ ਸਥਿਰ ਅਤੇ ਪੜ੍ਹਨ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। [![Methods and Functions](https://img.youtube.com/vi/XgKsD6Zwvlc/0.jpg)](https://youtube.com/watch?v=XgKsD6Zwvlc "Methods and Functions") > 🎥 ਉੱਪਰ ਦਿੱਤੀ ਤਸਵੀਰ 'ਤੇ ਕਲਿੱਕ ਕਰੋ ਮੈਥਡਸ ਅਤੇ ਫੰਕਸ਼ਨ ਬਾਰੇ ਵੀਡੀਓ ਦੇਖਣ ਲਈ। > ਤੁਸੀਂ ਇਹ ਪਾਠ [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101-functions/?WT.mc_id=academic-77807-sagibbon) 'ਤੇ ਲੈ ਸਕਦੇ ਹੋ! ## ਫੰਕਸ਼ਨ ਮੂਲ ਤੌਰ 'ਤੇ, ਇੱਕ ਫੰਕਸ਼ਨ ਕੋਡ ਦਾ ਇੱਕ ਬਲਾਕ ਹੁੰਦਾ ਹੈ ਜਿਸਨੂੰ ਅਸੀਂ ਜਦੋਂ ਚਾਹੀਏ ਤਦ ਚਲਾ ਸਕਦੇ ਹਾਂ। ਇਹ ਉਹਨਾਂ ਸਥਿਤੀਆਂ ਲਈ ਬਹੁਤ ਵਧੀਆ ਹੈ ਜਿੱਥੇ ਸਾਨੂੰ ਇੱਕੋ ਕੰਮ ਕਈ ਵਾਰ ਕਰਨਾ ਪੈਂਦਾ ਹੈ; ਬਜਾਏ ਇਸਦੇ ਕਿ ਲਾਜ਼ਮੀ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਹਰ ਜਗ੍ਹਾ ਲਾਜ਼ਮੀਆਂ ਨੂੰ ਦੁਹਰਾਇਆ ਜਾਵੇ (ਜੋ ਅਪਡੇਟ ਕਰਨਾ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦਾ ਹੈ), ਅਸੀਂ ਇਸਨੂੰ ਇੱਕ ਸਥਾਨ 'ਤੇ ਕੇਂਦਰਿਤ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਜਦੋਂ ਵੀ ਸਾਨੂੰ ਇਹ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇ, ਇਸਨੂੰ ਕਾਲ ਕਰ ਸਕਦੇ ਹਾਂ - ਤੁਸੀਂ ਫੰਕਸ਼ਨ ਨੂੰ ਹੋਰ ਫੰਕਸ਼ਨ ਤੋਂ ਵੀ ਕਾਲ ਕਰ ਸਕਦੇ ਹੋ! ਇਸ ਤੋਂ ਵੀ ਜ਼ਿਆਦਾ ਮਹੱਤਵਪੂਰਨ ਹੈ ਫੰਕਸ਼ਨ ਨੂੰ ਨਾਮ ਦੇਣ ਦੀ ਯੋਗਤਾ। ਹਾਲਾਂਕਿ ਇਹ ਛੋਟਾ ਜਿਹਾ ਲੱਗ ਸਕਦਾ ਹੈ, ਪਰ ਨਾਮ ਕੋਡ ਦੇ ਇੱਕ ਹਿੱਸੇ ਨੂੰ ਦਸਤਾਵੇਜ਼ ਕਰਨ ਦਾ ਇੱਕ ਤੇਜ਼ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਤੁਸੀਂ ਇਸਨੂੰ ਬਟਨ 'ਤੇ ਲੇਬਲ ਵਜੋਂ ਸੋਚ ਸਕਦੇ ਹੋ। ਜੇ ਮੈਂ "ਟਾਈਮਰ ਰੱਦ ਕਰੋ" ਪੜ੍ਹਦੇ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰਦਾ ਹਾਂ, ਤਾਂ ਮੈਨੂੰ ਪਤਾ ਹੈ ਕਿ ਇਹ ਘੜੀ ਨੂੰ ਚਲਾਉਣਾ ਬੰਦ ਕਰ ਦੇਵੇਗਾ। ## ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਅਤੇ ਕਾਲ ਕਰਨਾ ਫੰਕਸ਼ਨ ਲਈ ਸਿੰਟੈਕਸ ਹੇਠ ਲਿਖੇ ਤਰੀਕੇ ਵਰਗਾ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ: ```javascript function nameOfFunction() { // function definition // function definition/body } ``` ਜੇ ਮੈਂ ਇੱਕ ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦਾ ਹਾਂ ਜੋ ਇੱਕ ਗ੍ਰੀਟਿੰਗ ਦਿਖਾਏ, ਤਾਂ ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਹੋ ਸਕਦਾ ਹੈ: ```javascript function displayGreeting() { console.log('Hello, world!'); } ``` ਜਦੋਂ ਵੀ ਅਸੀਂ ਆਪਣੇ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ (ਜਾਂ ਚਲਾਉਣਾ) ਚਾਹੁੰਦੇ ਹਾਂ, ਅਸੀਂ ਫੰਕਸ਼ਨ ਦੇ ਨਾਮ ਦੇ ਬਾਅਦ `()` ਵਰਤਦੇ ਹਾਂ। ਇਹ ਗੱਲ ਯਾਦ ਰੱਖਣ ਵਾਲੀ ਹੈ ਕਿ ਸਾਡਾ ਫੰਕਸ਼ਨ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਜਾਂ ਬਾਅਦ ਪਰिभਾਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ; ਜਾਵਾਸਕ੍ਰਿਪਟ ਕੰਪਾਇਲਰ ਇਸਨੂੰ ਤੁਹਾਡੇ ਲਈ ਲੱਭ ਲਵੇਗਾ। ```javascript // calling our function displayGreeting(); ``` > **NOTE:** ਇੱਕ ਵਿਸ਼ੇਸ਼ ਕਿਸਮ ਦਾ ਫੰਕਸ਼ਨ ਹੁੰਦਾ ਹੈ ਜਿਸਨੂੰ **ਮੈਥਡ** ਕਿਹਾ ਜਾਂਦਾ ਹੈ, ਜੋ ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਵਰਤ ਰਹੇ ਹੋ! ਦਰਅਸਲ, ਅਸੀਂ ਇਹ ਆਪਣੇ ਡੈਮੋ ਵਿੱਚ ਵੇਖਿਆ ਜਦੋਂ ਅਸੀਂ `console.log` ਵਰਤਿਆ। ਜੋ ਮੈਥਡ ਨੂੰ ਫੰਕਸ਼ਨ ਤੋਂ ਵੱਖਰਾ ਬਣਾਉਂਦਾ ਹੈ ਉਹ ਇਹ ਹੈ ਕਿ ਮੈਥਡ ਇੱਕ ਆਬਜੈਕਟ ਨਾਲ ਜੁੜਿਆ ਹੁੰਦਾ ਹੈ (`console` ਸਾਡੇ ਉਦਾਹਰਨ ਵਿੱਚ), ਜਦੋਂ ਕਿ ਫੰਕਸ਼ਨ ਆਜ਼ਾਦ ਹੁੰਦਾ ਹੈ। ਤੁਸੀਂ ਕਈ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਇਹ ਸ਼ਬਦ ਇੱਕੋ ਜਿਹਾ ਵਰਤਦੇ ਸੁਣੋਗੇ। ### ਫੰਕਸ਼ਨ ਲਈ ਵਧੀਆ ਅਭਿਆਸ ਫੰਕਸ਼ਨ ਬਣਾਉਣ ਸਮੇਂ ਕੁਝ ਵਧੀਆ ਅਭਿਆਸਾਂ ਨੂੰ ਯਾਦ ਰੱਖਣਾ ਚਾਹੀਦਾ ਹੈ: - ਹਮੇਸ਼ਾ, ਵੇਰਵਾ ਦੇਣ ਵਾਲੇ ਨਾਮ ਵਰਤੋ ਤਾਂ ਜੋ ਤੁਹਾਨੂੰ ਪਤਾ ਹੋਵੇ ਕਿ ਫੰਕਸ਼ਨ ਕੀ ਕਰੇਗਾ - ਸ਼ਬਦਾਂ ਨੂੰ ਜੋੜਨ ਲਈ **camelCasing** ਵਰਤੋ - ਆਪਣੇ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਖਾਸ ਕੰਮ 'ਤੇ ਕੇਂਦਰਿਤ ਰੱਖੋ ## ਫੰਕਸ਼ਨ ਨੂੰ ਜਾਣਕਾਰੀ ਪਾਸ ਕਰਨਾ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਹੋਰ ਵਧੀਆ ਬਣਾਉਣ ਲਈ ਤੁਸੀਂ ਅਕਸਰ ਇਸ ਵਿੱਚ ਜਾਣਕਾਰੀ ਪਾਸ ਕਰਨਾ ਚਾਹੋਗੇ। ਜੇ ਅਸੀਂ ਆਪਣੇ `displayGreeting` ਉਦਾਹਰਨ ਨੂੰ ਮਾਨੀਏ, ਤਾਂ ਇਹ ਸਿਰਫ **Hello, world!** ਦਿਖਾਏਗਾ। ਇਹ ਸਭ ਤੋਂ ਵਧੀਆ ਫੰਕਸ਼ਨ ਨਹੀਂ ਹੈ ਜੋ ਕੋਈ ਬਣਾਉਂਦਾ। ਜੇ ਅਸੀਂ ਇਸਨੂੰ ਥੋੜਾ ਜਿਹਾ ਵਧੀਆ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ, ਜਿਵੇਂ ਕਿ ਕਿਸੇ ਨੂੰ ਗ੍ਰੀਟ ਕਰਨ ਲਈ ਨਾਮ ਦੱਸਣ ਦੀ ਆਗਿਆ ਦੇਣਾ, ਤਾਂ ਅਸੀਂ ਇੱਕ **ਪੈਰਾਮੀਟਰ** ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹਾਂ। ਪੈਰਾਮੀਟਰ (ਜਿਸਨੂੰ ਕਈ ਵਾਰ **argument** ਵੀ ਕਿਹਾ ਜਾਂਦਾ ਹੈ), ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਭੇਜੀ ਗਈ ਵਾਧੂ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ। ਪੈਰਾਮੀਟਰ ਪਰਿਭਾਸ਼ਾ ਦੇ ਹਿੱਸੇ ਵਿੱਚ ਕੋਮਾਂ ਨਾਲ ਵੱਖਰੇ ਕੀਤੇ ਜਾਂਦੇ ਹਨ: ```javascript function name(param, param2, param3) { } ``` ਅਸੀਂ ਆਪਣੇ `displayGreeting` ਨੂੰ ਅਪਡੇਟ ਕਰ ਸਕਦੇ ਹਾਂ ਤਾਂ ਕਿ ਇਹ ਇੱਕ ਨਾਮ ਲੈ ਸਕੇ ਅਤੇ ਉਸਨੂੰ ਦਿਖਾ ਸਕੇ। ```javascript function displayGreeting(name) { const message = `Hello, ${name}!`; console.log(message); } ``` ਜਦੋਂ ਅਸੀਂ ਆਪਣੇ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ ਅਤੇ ਪੈਰਾਮੀਟਰ ਪਾਸ ਕਰਦੇ ਹਾਂ, ਅਸੀਂ ਇਸਨੂੰ ਕੋਸ਼ਠਕ ਵਿੱਚ ਦਰਸਾਉਂਦੇ ਹਾਂ। ```javascript displayGreeting('Christopher'); // displays "Hello, Christopher!" when run ``` ## ਡਿਫਾਲਟ ਮੁੱਲ ਅਸੀਂ ਆਪਣੇ ਫੰਕਸ਼ਨ ਨੂੰ ਹੋਰ ਵਧੀਆ ਬਣਾਉਣ ਲਈ ਹੋਰ ਪੈਰਾਮੀਟਰ ਸ਼ਾਮਲ ਕਰ ਸਕਦੇ ਹਾਂ। ਪਰ ਜੇ ਅਸੀਂ ਨਹੀਂ ਚਾਹੁੰਦੇ ਕਿ ਹਰ ਮੁੱਲ ਨੂੰ ਦਰਸਾਇਆ ਜਾਵੇ? ਗ੍ਰੀਟਿੰਗ ਦੇ ਉਦਾਹਰਨ ਦੇ ਨਾਲ ਜਾਰੀ ਰੱਖਦੇ ਹੋਏ, ਅਸੀਂ ਨਾਮ ਨੂੰ ਲਾਜ਼ਮੀ ਰੱਖ ਸਕਦੇ ਹਾਂ (ਸਾਨੂੰ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਅਸੀਂ ਕਿਸਨੂੰ ਗ੍ਰੀਟ ਕਰ ਰਹੇ ਹਾਂ), ਪਰ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਗ੍ਰੀਟਿੰਗ ਨੂੰ ਜ਼ਰੂਰਤ ਅਨੁਸਾਰ ਕਸਟਮਾਈਜ਼ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੇ ਹੋਏ ਇਸਨੂੰ ਡਿਫਾਲਟ ਮੁੱਲ ਦੇਣ। ਇੱਕ ਪੈਰਾਮੀਟਰ ਨੂੰ ਡਿਫਾਲਟ ਮੁੱਲ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ, ਅਸੀਂ ਇਸਨੂੰ ਬਿਲਕੁਲ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਸੈਟ ਕਰਦੇ ਹਾਂ ਜਿਵੇਂ ਅਸੀਂ ਇੱਕ ਵੈਰੀਏਬਲ ਲਈ ਮੁੱਲ ਸੈਟ ਕਰਦੇ ਹਾਂ - `parameterName = 'defaultValue'`. ਪੂਰੇ ਉਦਾਹਰਨ ਨੂੰ ਵੇਖਣ ਲਈ: ```javascript function displayGreeting(name, salutation='Hello') { console.log(`${salutation}, ${name}`); } ``` ਜਦੋਂ ਅਸੀਂ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਫੈਸਲਾ ਕਰ ਸਕਦੇ ਹਾਂ ਕਿ ਕੀ ਅਸੀਂ `salutation` ਲਈ ਮੁੱਲ ਸੈਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹਾਂ। ```javascript displayGreeting('Christopher'); // displays "Hello, Christopher" displayGreeting('Christopher', 'Hi'); // displays "Hi, Christopher" ``` ## ਵਾਪਸੀ ਮੁੱਲ ਅਜੇ ਤੱਕ ਸਾਡੇ ਦੁਆਰਾ ਬਣਾਇਆ ਗਿਆ ਫੰਕਸ਼ਨ ਹਮੇਸ਼ਾ [console](https://developer.mozilla.org/docs/Web/API/console) ਵਿੱਚ ਆਉਟਪੁੱਟ ਕਰੇਗਾ। ਕਈ ਵਾਰ ਇਹ ਬਿਲਕੁਲ ਉਹੀ ਹੋ ਸਕਦਾ ਹੈ ਜੋ ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ, ਖਾਸ ਕਰਕੇ ਜਦੋਂ ਅਸੀਂ ਉਹ ਫੰਕਸ਼ਨ ਬਣਾਉਂਦੇ ਹਾਂ ਜੋ ਹੋਰ ਸੇਵਾਵਾਂ ਨੂੰ ਕਾਲ ਕਰਨ ਵਾਲੇ ਹਨ। ਪਰ ਜੇ ਮੈਂ ਇੱਕ ਸਹਾਇਕ ਫੰਕਸ਼ਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦਾ ਹਾਂ ਜੋ ਇੱਕ ਗਣਨਾ ਕਰੇ ਅਤੇ ਮੁੱਲ ਵਾਪਸ ਦੇਵੇ ਤਾਂ ਕਿ ਮੈਂ ਇਸਨੂੰ ਕਿਤੇ ਹੋਰ ਵਰਤ ਸਕਾਂ? ਅਸੀਂ ਇਹ **ਵਾਪਸੀ ਮੁੱਲ** ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਰ ਸਕਦੇ ਹਾਂ। ਇੱਕ ਵਾਪਸੀ ਮੁੱਲ ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਅਤੇ ਇਸਨੂੰ ਇੱਕ ਵੈਰੀਏਬਲ ਵਿੱਚ ਸਟੋਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਬਿਲਕੁਲ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਜਿਵੇਂ ਅਸੀਂ ਇੱਕ ਸਟ੍ਰਿੰਗ ਜਾਂ ਨੰਬਰ ਵਰਗੇ ਸਥਿਰ ਮੁੱਲ ਨੂੰ ਸਟੋਰ ਕਰ ਸਕਦੇ ਹਾਂ। ਜੇਕਰ ਇੱਕ ਫੰਕਸ਼ਨ ਕੁਝ ਵਾਪਸ ਕਰਦਾ ਹੈ ਤਾਂ `return` ਕੀਵਰਡ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। `return` ਕੀਵਰਡ ਵਾਪਸ ਕੀਤੇ ਜਾ ਰਹੇ ਮੁੱਲ ਜਾਂ ਰਿਫਰੈਂਸ ਦੀ ਉਮੀਦ ਕਰਦਾ ਹੈ: ```javascript return myVariable; ``` ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਬਣਾਉਣ ਲਈ ਇੱਕ ਗ੍ਰੀਟਿੰਗ ਸੁਨੇਹਾ ਬਣਾਉਣ ਅਤੇ ਮੁੱਲ ਨੂੰ ਕਾਲ ਕਰਨ ਵਾਲੇ ਨੂੰ ਵਾਪਸ ਕਰਨ ਲਈ ਵਰਤ ਸਕਦੇ ਹਾਂ। ```javascript function createGreetingMessage(name) { const message = `Hello, ${name}`; return message; } ``` ਜਦੋਂ ਅਸੀਂ ਇਸ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹਾਂ, ਅਸੀਂ ਮੁੱਲ ਨੂੰ ਇੱਕ ਵੈਰੀਏਬਲ ਵਿੱਚ ਸਟੋਰ ਕਰਾਂਗੇ। ਇਹ ਬਿਲਕੁਲ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਹੈ ਜਿਵੇਂ ਅਸੀਂ ਇੱਕ ਸਥਿਰ ਮੁੱਲ ਸੈਟ ਕਰਦੇ ਹਾਂ (ਜਿਵੇਂ `const name = 'Christopher'`). ```javascript const greetingMessage = createGreetingMessage('Christopher'); ``` ## ਫੰਕਸ਼ਨ ਨੂੰ ਫੰਕਸ਼ਨ ਲਈ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਵਰਤਣਾ ਜਦੋਂ ਤੁਸੀਂ ਆਪਣੇ ਪ੍ਰੋਗਰਾਮਿੰਗ ਕਰੀਅਰ ਵਿੱਚ ਅੱਗੇ ਵਧਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਉਹਨਾਂ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਦੇਖੋਗੇ ਜੋ ਫੰਕਸ਼ਨ ਨੂੰ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਸਵੀਕਾਰ ਕਰਦੇ ਹਨ। ਇਹ ਸ਼ਾਨਦਾਰ ਤਰੀਕਾ ਆਮ ਤੌਰ 'ਤੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਸਾਨੂੰ ਪਤਾ ਨਹੀਂ ਹੁੰਦਾ ਕਿ ਕੁਝ ਕਦੋਂ ਹੋਵੇਗਾ ਜਾਂ ਪੂਰਾ ਹੋਵੇਗਾ, ਪਰ ਸਾਨੂੰ ਪਤਾ ਹੈ ਕਿ ਸਾਨੂੰ ਇਸਦੇ ਜਵਾਬ ਵਿੱਚ ਇੱਕ ਕਾਰਵਾਈ ਕਰਨੀ ਹੈ। ਇੱਕ ਉਦਾਹਰਨ ਦੇ ਤੌਰ 'ਤੇ, [setTimeout](https://developer.mozilla.org/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout) ਨੂੰ ਮਾਨੋ, ਜੋ ਇੱਕ ਟਾਈਮਰ ਸ਼ੁਰੂ ਕਰਦਾ ਹੈ ਅਤੇ ਜਦੋਂ ਇਹ ਪੂਰਾ ਹੁੰਦਾ ਹੈ ਤਾਂ ਕੋਡ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਸਾਨੂੰ ਇਸਨੂੰ ਦੱਸਣਾ ਪੈਂਦਾ ਹੈ ਕਿ ਅਸੀਂ ਕਿਹੜਾ ਕੋਡ ਚਲਾਉਣਾ ਚਾਹੁੰਦੇ ਹਾਂ। ਇਹ ਇੱਕ ਫੰਕਸ਼ਨ ਲਈ ਬਿਲਕੁਲ ਸਹੀ ਕੰਮ ਲੱਗਦਾ ਹੈ! ਜੇ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤਾ ਕੋਡ ਚਲਾਉਂਦੇ ਹੋ, ਤਾਂ 3 ਸਕਿੰਟ ਬਾਅਦ ਤੁਹਾਨੂੰ ਸੁਨੇਹਾ **3 ਸਕਿੰਟ ਹੋ ਗਏ ਹਨ** ਦਿਖਾਈ ਦੇਵੇਗਾ। ```javascript function displayDone() { console.log('3 seconds has elapsed'); } // timer value is in milliseconds setTimeout(displayDone, 3000); ``` ### ਗੁੰਨਾਮੀ ਫੰਕਸ਼ਨ ਆਓ ਜੋ ਅਸੀਂ ਬਣਾਇਆ ਹੈ ਉਸਨੂੰ ਦੁਬਾਰਾ ਵੇਖੀਏ। ਅਸੀਂ ਇੱਕ ਨਾਮ ਦੇ ਨਾਲ ਇੱਕ ਫੰਕਸ਼ਨ ਬਣਾਉਂਦੇ ਹਾਂ ਜੋ ਸਿਰਫ ਇੱਕ ਵਾਰ ਵਰਤਿਆ ਜਾਵੇਗਾ। ਜਿਵੇਂ ਜਿਵੇਂ ਸਾਡਾ ਐਪਲੀਕੇਸ਼ਨ ਹੋਰ ਜਟਿਲ ਬਣਦਾ ਹੈ, ਅਸੀਂ ਆਪਣੇ ਆਪ ਨੂੰ ਕਈ ਫੰਕਸ਼ਨ ਬਣਾਉਂਦੇ ਹੋਏ ਦੇਖ ਸਕਦੇ ਹਾਂ ਜੋ ਸਿਰਫ ਇੱਕ ਵਾਰ ਕਾਲ ਕੀਤੇ ਜਾਣਗੇ। ਇਹ ਆਦਰਸ਼ ਨਹੀਂ ਹੈ। ਜਿਵੇਂ ਕਿ ਪਤਾ ਲੱਗਦਾ ਹੈ, ਸਾਨੂੰ ਹਮੇਸ਼ਾ ਇੱਕ ਨਾਮ ਪ੍ਰਦਾਨ ਕਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੁੰਦੀ! ਜਦੋਂ ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕਰ ਰਹੇ ਹਾਂ, ਅਸੀਂ ਪਹਿਲਾਂ ਇੱਕ ਬਣਾਉਣ ਨੂੰ ਬਾਈਪਾਸ ਕਰ ਸਕਦੇ ਹਾਂ ਅਤੇ ਇਸਦੇ ਬਦਲੇ ਵਿੱਚ ਇਸਨੂੰ ਪੈਰਾਮੀਟਰ ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਬਣਾਉਣ ਲਈ। ਅਸੀਂ ਉਹੀ `function` ਕੀਵਰਡ ਵਰਤਦੇ ਹਾਂ, ਪਰ ਇਸਦੇ ਬਦਲੇ ਵਿੱਚ ਅਸੀਂ ਇਸਨੂੰ ਇੱਕ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਬਣਾਉਂਦੇ ਹਾਂ। ਆਓ ਉੱਪਰ ਦਿੱਤੇ ਕੋਡ ਨੂੰ ਗੁੰਨਾਮੀ ਫੰਕਸ਼ਨ ਵਰਤ ਕੇ ਦੁਬਾਰਾ ਲਿਖੀਏ: ```javascript setTimeout(function() { console.log('3 seconds has elapsed'); }, 3000); ``` ਜੇ ਤੁਸੀਂ ਸਾਡਾ ਨਵਾਂ ਕੋਡ ਚਲਾਉਂਦੇ ਹੋ ਤਾਂ ਤੁਸੀਂ ਨੋਟਿਸ ਕਰੋਗੇ ਕਿ ਸਾਨੂੰ ਉਹੀ ਨਤੀਜੇ ਮਿਲਦੇ ਹਨ। ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਬਣਾਇਆ ਹੈ, ਪਰ ਇਸਨੂੰ ਇੱਕ ਨਾਮ ਦੇਣ ਦੀ ਲੋੜ ਨਹੀਂ ਸੀ! ### ਫੈਟ ਐਰੋ ਫੰਕਸ਼ਨ ਕਈ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ (ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਜਾਵਾਸਕ੍ਰਿਪਟ ਸ਼ਾਮਲ ਹੈ) ਵਿੱਚ ਇੱਕ ਆਮ ਸ਼ਾਰਟਕਟ **ਐਰੋ** ਜਾਂ **ਫੈਟ ਐਰੋ** ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਯੋਗਤਾ ਹੈ। ਇਹ `=>` ਦੇ ਇੱਕ ਵਿਸ਼ੇਸ਼ ਸੰਕੇਤਕ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜੋ ਇੱਕ ਤੀਰ ਵਰਗਾ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ - ਇਸ ਲਈ ਨਾਮ! `=>` ਦੀ ਵਰਤੋਂ ਕਰਕੇ, ਅਸੀਂ `function` ਕੀਵਰਡ ਨੂੰ ਛੱਡ ਸਕਦੇ ਹਾਂ। ਆਓ ਆਪਣੇ ਕੋਡ ਨੂੰ ਇੱਕ ਵਾਰ ਫਿਰ ਫੈਟ ਐਰੋ ਫੰਕਸ਼ਨ ਵਰਤ ਕੇ ਦੁਬਾਰਾ ਲਿਖੀਏ: ```javascript setTimeout(() => { console.log('3 seconds has elapsed'); }, 3000); ``` ### ਹਰ ਰਣਨੀਤੀ ਨੂੰ ਕਦੋਂ ਵਰਤਣਾ ਹੈ ਤੁਸੀਂ ਹੁਣ ਵੇਖਿਆ ਹੈ ਕਿ ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਨੂੰ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਪਾਸ ਕਰਨ ਦੇ ਤਿੰਨ ਤਰੀਕੇ ਹਨ ਅਤੇ ਤੁਸੀਂ ਸੋਚ ਰਹੇ ਹੋ ਸਕਦੇ ਹੋ ਕਿ ਹਰ ਇੱਕ ਨੂੰ ਕਦੋਂ ਵਰਤਣਾ ਹੈ। ਜੇ ਤੁਹਾਨੂੰ ਪਤਾ ਹੈ ਕਿ ਤੁਸੀਂ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਤੋਂ ਵੱਧ ਵਾਰ ਵਰਤੋਂਗੇ, ਤਾਂ ਇਸਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਬਣਾਓ। ਜੇ ਤੁਸੀਂ ਇਸਨੂੰ ਸਿਰਫ ਇੱਕ ਸਥਾਨ ਲਈ ਵਰਤੋਂਗੇ, ਤਾਂ ਆਮ ਤੌਰ 'ਤੇ ਗੁੰਨਾਮੀ ਫੰਕਸ਼ਨ ਵਰਤਣਾ ਵਧੀਆ ਹੈ। ਚਾਹੇ ਤੁਸੀਂ ਫੈਟ ਐਰੋ ਫੰਕਸ਼ਨ ਜਾਂ ਹੋਰ ਰਵਾਇਤੀ `function` ਸਿੰਟੈਕਸ ਵਰਤੋਂ, ਇਹ ਤੁਹਾਡੇ ਉੱਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ, ਪਰ ਤੁਸੀਂ ਨੋਟਿਸ ਕਰੋਗੇ ਕਿ ਜ਼ਿਆਦਾਤਰ ਆਧੁਨਿਕ ਡਿਵੈਲਪਰ `=>` ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੇ ਹਨ। --- ## 🚀 ਚੁਣੌਤੀ ਕੀ ਤੁਸੀਂ ਇੱਕ ਵਾਕ ਵਿੱਚ ਫੰਕਸ਼ਨ ਅਤੇ ਮੈਥਡ ਦੇ ਅੰਤਰ ਨੂੰ ਵਿਆਖਿਆ ਕਰ ਸਕਦੇ ਹੋ? ਇੱਕ ਕੋਸ਼ਿਸ਼ ਕਰੋ! ## GitHub Copilot Agent Challenge 🚀 Agent ਮੋਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੀ ਚੁਣੌਤੀ ਪੂਰੀ ਕਰੋ: **ਵੇਰਵਾ:** ਇਸ ਪਾਠ ਵਿੱਚ ਕਵਰ ਕੀਤੇ ਗਏ ਵੱਖ-ਵੱਖ ਫੰਕਸ਼ਨ ਸੰਕਲਪਾਂ ਨੂੰ ਦਰਸਾਉਣ ਵਾਲਾ ਗਣਿਤ ਫੰਕਸ਼ਨ ਦਾ ਇੱਕ ਯੂਟਿਲਿਟੀ ਲਾਇਬ੍ਰੇਰੀ ਬਣਾਓ, ਜਿਸ ਵਿੱਚ ਪੈਰਾਮੀਟਰ, ਡਿਫਾਲਟ ਮੁੱਲ, ਵਾਪਸੀ ਮੁੱਲ, ਅਤੇ ਐਰੋ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਹਨ। **ਪ੍ਰੋੰਪਟ:** `mathUtils.js` ਨਾਮਕ ਇੱਕ ਜਾਵਾਸਕ੍ਰਿਪਟ ਫਾਈਲ ਬਣਾਓ ਜਿਸ ਵਿੱਚ ਹੇਠ ਲਿਖੇ ਫੰਕਸ਼ਨ ਸ਼ਾਮਲ ਹਨ: 1. ਇੱਕ ਫੰਕਸ਼ਨ `add` ਜੋ ਦੋ ਪੈਰਾਮੀਟਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਉਨ੍ਹਾਂ ਦਾ ਜੋੜ ਵਾਪਸ ਕਰਦਾ ਹੈ 2. ਇੱਕ ਫੰਕਸ਼ਨ `multiply` ਜਿਸ ਵਿੱਚ ਡਿਫਾਲਟ ਪੈਰਾਮੀਟਰ ਮੁੱਲ ਹਨ (ਦੂਜਾ ਪੈਰਾਮੀਟਰ ਡਿਫਾਲਟ ਤੌਰ 'ਤੇ 1 ਹੈ) 3. ਇੱਕ ਐਰੋ ਫੰਕਸ਼ਨ `square` ਜੋ ਇੱਕ ਨੰਬਰ ਲੈਂਦਾ ਹੈ ਅਤੇ ਇਸਦਾ ਵਰਗ ਵਾਪਸ ਕਰਦਾ ਹੈ 4. ਇੱਕ ਫੰਕਸ਼ਨ `calculate` ਜੋ ਇੱਕ ਹੋਰ ਫੰਕਸ਼ਨ ਨੂੰ ਪੈਰਾਮੀਟਰ ਵਜੋਂ ਅਤੇ ਦੋ ਨੰਬਰਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ, ਫਿਰ ਉਹਨਾਂ ਨੰਬਰਾਂ 'ਤੇ ਫੰਕਸ਼ਨ ਲਾਗੂ ਕਰਦਾ ਹੈ --- **ਅਸਵੀਕਰਤੀ**: ਇਹ ਦਸਤਾਵੇਜ਼ AI ਅਨੁਵਾਦ ਸੇਵਾ [Co-op Translator](https://github.com/Azure/co-op-translator) ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅਨੁਵਾਦ ਕੀਤਾ ਗਿਆ ਹੈ। ਜਦੋਂ ਕਿ ਅਸੀਂ ਸਹੀ ਹੋਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਹਾਂ, ਕਿਰਪਾ ਕਰਕੇ ਧਿਆਨ ਦਿਓ ਕਿ ਸਵੈਚਾਲਿਤ ਅਨੁਵਾਦਾਂ ਵਿੱਚ ਗਲਤੀਆਂ ਜਾਂ ਅਸੁੱਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਮੂਲ ਦਸਤਾਵੇਜ਼ ਨੂੰ ਇਸਦੀ ਮੂਲ ਭਾਸ਼ਾ ਵਿੱਚ ਅਧਿਕਾਰਤ ਸਰੋਤ ਮੰਨਿਆ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਜਾਣਕਾਰੀ ਲਈ, ਪੇਸ਼ੇਵਰ ਮਨੁੱਖੀ ਅਨੁਵਾਦ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸ ਅਨੁਵਾਦ ਦੀ ਵਰਤੋਂ ਤੋਂ ਪੈਦਾ ਹੋਣ ਵਾਲੇ ਕਿਸੇ ਵੀ ਗਲਤਫਹਿਮੀ ਜਾਂ ਗਲਤ ਵਿਆਖਿਆ ਲਈ ਅਸੀਂ ਜ਼ਿੰਮੇਵਾਰ ਨਹੀਂ ਹਾਂ।