जावास्क्रिप्ट में फंक्शन

जावास्क्रिप्ट में फंक्शन

यह लेख जावास्क्रिप्ट में फंक्शन को समझाता है।

YouTube Video

जावास्क्रिप्ट में फंक्शन

जावास्क्रिप्ट में फंक्शन पुन: उपयोगी कोड के ब्लॉक होते हैं जिन्हें विशेष कार्य करने के लिए उपयोग किया जाता है। फंक्शन का उपयोग कोड की पठनीयता को बेहतर बनाता है और उसे बनाए रखना आसान बनाता है। फंक्शन को कई तरीकों से परिभाषित किया जा सकता है और आर्ग्युमेंट्स और रिटर्न वैल्यू का उपयोग करके लचीले तरीके से प्रबंधित किया जा सकता है।

फंक्शन को परिभाषित करने के तरीके

फंक्शन डिक्लरेशन

फ़ंक्शन को function कीवर्ड का उपयोग करके परिभाषित किया जा सकता है। फंक्शन डिक्लरेशन को कोड चलने से पहले होस्ट किया जाता है, इसलिए इन्हें परिभाषित किए जाने से पहले ही बुलाया जा सकता है।

1console.log(greet("Everyone")); // Hello, Everyone
2
3function greet(name) {
4    return "Hello, " + name;
5}
6
7console.log(greet("Alice")); // Hello, Alice

इस उदाहरण में, क्योंकि greet फंक्शन को उसके डिक्लरेशन से पहले बुलाया गया है, Hello, Everyone और Hello, Alice प्रदर्शित होता है।

फंक्शन एक्सप्रेशन

फंक्शन को वेरिएबल में असाइन करके भी परिभाषित किया जा सकता है। इस स्थिति में, फंक्शन को होस्ट नहीं किया जाता है और इसे केवल परिभाषित किए जाने के बाद ही बुलाया जा सकता है।

1const greet = function(name) {
2    return "Hello, " + name;
3};
4
5console.log(greet("Bob")); // Hello, Bob

इस उदाहरण में, Hello, Bob प्रदर्शित होगा।

एरो फंक्शन

एरो फंक्शन छोटे सिंटैक्स के साथ फंक्शन को परिभाषित करने का एक तरीका है। ये विशेष रूप से तब उपयोगी होते हैं जब गुमनाम फंक्शन (नाम के बिना फंक्शन) का उपयोग किया जाता है। एरो फंक्शन का this कीवर्ड के संदर्भ में अलग व्यवहार होता है।

 1const greet = (name) => {
 2    return "Hello, " + name;
 3};
 4
 5// When it can be expressed in a single line,
 6// `return` and curly braces can be omitted
 7const greetShort = name => "Hello, " + name;
 8
 9console.log(greet("Charlie")); // Hello, Charlie
10console.log(greetShort("Dave")); // Hello, Dave

इस उदाहरण में, फंक्शन को greet और greetShort के रूप में घोषित किया जा सकता है। यदि फंक्शन केवल एक पंक्ति का है, तो आप {} (घुंघराले ब्रैकेट) को छोड़ सकते हैं जैसे greetShort

फंक्शन के तत्व

आर्ग्युमेंट्स

जो मान फंक्शन को पास किए जाते हैं उन्हें आर्ग्युमेंट्स कहा जाता है। फंक्शन को परिभाषित करते समय आर्ग्युमेंट्स निर्दिष्ट करके, आप फंक्शन को बुलाते समय मान पास कर सकते हैं।

1function add(a, b) {
2    return a + b;
3}
4
5console.log(add(2, 3)); // 5

डिफ़ॉल्ट आर्गुमेंट्स

यदि आर्गुमेंट्स को कोई मान नहीं दिया गया है, तो आप एक डिफ़ॉल्ट मान निर्दिष्ट कर सकते हैं।

1function greet(name = "Guest") {
2    return "Hello, " + name;
3}
4
5console.log(greet()); // Hello, Guest
6console.log(greet("Alice")); // Hello, Alice

इस उदाहरण में, यदि greet() को कॉल किया जाता है, तो डिफ़ॉल्ट Guest का उपयोग किया जाता है।

वापसी मान (Return Value)

आप return स्टेटमेंट का उपयोग करके किसी फ़ंक्शन से वापसी मान लौटा सकते हैं। यदि कोई return स्टेटमेंट नहीं है, तो फ़ंक्शन undefined लौटाता है।

1function greet(name) {
2    console.log('Hello, ' + name + '!');
3}
4function square(num) {
5    return num * num;
6}
7
8console.log(square(4)); // 16
9console.log(greet('Alice')); // undefined

इस उदाहरण में, चूंकि greet कोई मान वापस नहीं करता है, इसलिए वापसी मान undefined है।

अनाम फ़ंक्शन

जिस फ़ंक्शन का कोई नाम नहीं होता उसे अनाम फ़ंक्शन कहा जाता है। इन्हें अक्सर फ़ंक्शन एक्सप्रेशन या एरो फ़ंक्शन्स के रूप में उपयोग किया जाता है।

1const double = function(num) {
2    return num * 2;
3};
4
5console.log(double(5)); // 10

तत्काल निष्पादित फ़ंक्शन एक्सप्रेशन (IIFE)

तत्काल निष्पादित फ़ंक्शन एक्सप्रेशन (IIFE) एक ऐसा फ़ंक्शन है जो जैसे ही परिभाषित किया जाता है उसे निष्पादित किया जाता है। इसे आमतौर पर स्कोप को नियंत्रित करने के लिए उपयोग किया जाता है।

1/* Example of IIFE: Immediately Invoked Function Expression */
2(function() {
3    console.log("This is an IIFE");
4})(); // This is an IIFE

यह जैसे ही घोषित किया जाता है निष्पादित हो जाता है।

कॉलबैक फ़ंक्शन

एक फ़ंक्शन को दूसरे फ़ंक्शन में आर्गुमेंट के रूप में पास करना, बाद में निष्पादन के लिए, कॉलबैक फ़ंक्शन कहलाता है। यह अक्सर असिंक्रोनस प्रोसेसिंग और इवेंट हैंडलिंग में उपयोग होता है।

1function processData(callback) {
2    let data = "Processed Data";
3    callback(data);
4}
5
6processData(function(result) {
7    console.log(result); // Processed Data
8});

इस उदाहरण में, एक ऐसा फ़ंक्शन जो कंसोल पर एक मान आउटपुट करता है, उसे कॉलबैक फ़ंक्शन के रूप में पास किया गया है।

पुनरावर्ती फ़ंक्शन

किसी फ़ंक्शन को स्वयं ही कॉल करना पुनरावृत्ति (recursion) कहलाता है, और एक ऐसा फ़ंक्शन जो पुनरावृत्ति का उपयोग करके दोहराव वाली प्रोसेसिंग करता है, वह पुनरावर्ती फ़ंक्शन कहलाता है। उदाहरण के लिए, फ़ैक्टोरियल की गणना करने के लिए एक फ़ंक्शन को निम्न प्रकार से पुनरावृत्ति का उपयोग करके लागू किया जा सकता है।

 1function factorial(n) {
 2    if (n === 0) {
 3        return 1;
 4    } else {
 5        return n * factorial(n - 1);
 6    }
 7}
 8
 9console.log(factorial(5));
10// Output : 120
11// (5 * 4 * 3 * 2 * 1 = 120)

इस उदाहरण में, 5का फैक्टरियल, जो कि120` है, प्रदर्शित किया जाएगा।

this कीवर्ड

फ़ंक्शन के भीतर उपयोग किया गया this यह दर्शाता है कि फ़ंक्शन किस ऑब्जेक्ट का संदर्भ ले रहा है। एक सामान्य फ़ंक्शन में, यह कॉलिंग ऑब्जेक्ट का संदर्भ देता है, लेकिन एरो फ़ंक्शन्स में, यह उस स्कोप का this बनाए रखता है जिसमें इसे परिभाषित किया गया था।

 1const obj = {
 2    name: "Alice",
 3    greet: function() {
 4        console.log(this.name); // Refers to "Alice"
 5    }
 6};
 7
 8obj.greet(); // Alice
 9
10const obj2 = {
11    name: "Bob",
12    greet: () => {
13        // Arrow function refers to the outer scope (undefined here)
14        console.log(this.name);
15    }
16};
17
18obj2.greet(); // undefined

obj वेरिएबल का greet function कीवर्ड का उपयोग करके घोषित किया गया है। इसलिए, this कीवर्ड obj वेरिएबल के ऑब्जेक्ट को संदर्भित करता है। दूसरी ओर, obj2 वेरिएबल का greet एक एरो फ़ंक्शन का उपयोग करके घोषित किया गया है। इसलिए, this कीवर्ड बाहरी स्कोप के ऑब्जेक्ट को संदर्भित करता है और इस उदाहरण में यह undefined है।

फंक्शन का स्कोप और क्लोज़र्स

फंक्शन के अंदर परिभाषित वेरिएबल्स को फंक्शन के बाहर से एक्सेस नहीं किया जा सकता है। इसे फंक्शन का स्कोप कहा जाता है। एक विशेषता जिसे क्लोज़र कहा जाता है, यह उस स्कोप को बनाए रखता है जब फंक्शन को परिभाषित किया गया था।

 1function outer() {
 2    let outerVar = "I am outer!";
 3
 4    function inner() {
 5        console.log(outerVar); // Can access outerVar
 6    }
 7
 8    return inner;
 9}
10
11const innerFunc = outer();
12innerFunc(); // I am outer!

इस उदाहरण में, inner फंक्शन outerVar वेरिएबल को एक्सेस कर सकता है क्योंकि यह उस स्कोप को बनाए रखता है जिसमें इसे परिभाषित किया गया था।

सारांश

  • फंक्शन्स को परिभाषित करने के विभिन्न तरीके हैं, जिनमें फंक्शन घोषणाएँ, फंक्शन एक्सप्रेशन्स, और एरो फंक्शन्स शामिल हैं।
  • फंक्शन्स आर्ग्युमेंट्स ले सकते हैं और मान लौटा सकते हैं।
  • कुछ विशेष उपयोग हैं जैसे कॉलबैक फंक्शन्स और रिकर्सिव फंक्शन्स
  • this के हैंडलिंग में सावधानी बरतनी चाहिए, क्योंकि एरो फंक्शन्स और सामान्य फंक्शन्स अलग ढंग से व्यवहार करते हैं।
  • क्लोज़र्स का उपयोग स्कोप के बाहर से आंतरिक वेरिएबल्स को एक्सेस करने के लिए किया जा सकता है।

फंक्शन्स जावास्क्रिप्ट में महत्वपूर्ण अवधारणाओं में से एक हैं, जो इसकी लचीली संरचना का लाभ उठाते हैं।

आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।

YouTube Video