JavaScript फंक्शन में डिफ़ॉल्ट पैरामीटर: सरल और प्रभावी तरीका

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

पैरामीटर बिना उपहार? JavaScript में डिफ़ॉल्ट वैल्यू को समझें

\n\n

कल्पना करें कि आपने पिज़्ज़ा ऑर्डर किया। आप डिलीवरी पर कहते हैं: "मुझे एक पिज़्ज़ा दीजिए।" ऑपरेटर पूछता है: "कौन सा?" — "स्टैंडर्ड, चीज़ और सॉसेज वाला।" आपने यह भी नहीं सोचा कि पिज़्ज़ा के डिफ़ॉल्ट पैरामीटर होते हैं।

\n\n

ठीक वैसे ही JavaScript में: फंक्शन को अक्सर सभी आर्गुमेंट्स के बिना कॉल किया जाता है। और अगर प्रोग्रामर ने set a default parameter value for a JavaScript function का प्रावधान नहीं किया, तो कोड क्रैश हो सकता है या अनपेक्षित व्यवहार कर सकता है। इस लेख में हम JS में फंक्शन पैरामीटर के लिए डिफ़ॉल्ट वैल्यू सेट करने के सभी तरीकों को समझेंगे — पुराने तरीकों से लेकर ES6 के आधुनिक सिंटैक्स तक। चलिए शुरू करते हैं!

\n\n

यह इतना महत्वपूर्ण क्यों है?

\n\n

मान लीजिए, हमारे पास एक फंक्शन है जो उपयोगकर्ता का स्वागत करता है:

\n\n
function greet(name) {\n    console.log('नमस्ते, ' + name + '!');\n}\n\ngreet(); // आउटपुट: "नमस्ते, undefined!" — अजीब लगता है, है ना?
\n\n

default parameters javascript के बिना, न दिया गया आर्गुमेंट undefined हो जाता है। और अगर हम undefined पर कोई मेथड कॉल करने की कोशिश करें — तो एरर आएगी। इसलिए js में डिफ़ॉल्ट पैरामीटर सिर्फ सुविधा नहीं, बल्कि बग्स से बचाव है।

\n\n

तरीका 1: क्लासिक — टर्नरी ऑपरेटर (या if)

\n\n

ES6 से पहले, डेवलपर्स javascript ternary operator या साधारण चेक का उपयोग करते थे। यह काम करता है, लेकिन कोड भारी लगता है:

\n\n
function multiply(a, b) {\n    a = a !== undefined ? a : 1;\n    b = b !== undefined ? b : 2;\n    return a * b;\n}\n\nconsole.log(multiply(5)); // 10 (5 * 2)\nconsole.log(multiply());  // 2 (1 * 2)
\n\n

फायदे: शुरुआती लोगों के लिए भी समझना आसान, पुराने ब्राउज़रों के साथ संगत।
\nनुकसान: कोड फूल जाता है। अगर 5-6 पैरामीटर हों, तो पढ़ने में मुश्किल हो जाती है।

\n\n

एक खास बात: undefined vs truthy चेक

\n\n

कई शुरुआती ऐसे लिखते हैं:

\n\n
function greet(name) {\n    name = name || 'अतिथि';\n    console.log('नमस्ते, ' + name);\n}
\n\n

यह तब तक काम करता है जब तक आप 0, खाली स्ट्रिंग '' या false नहीं भेजते। ये सभी वैल्यू falsy हैं, और फंक्शन इन्हें 'अतिथि' से बदल देगा। अगर आपको 0 को वैध वैल्यू के रूप में भेजना है — तो यह तरीका काम नहीं करेगा। undefined की सख्त जांच का उपयोग करें।

\n\n

तरीका 2: जादुई ऑब्जेक्ट arguments

\n\n

हर फंक्शन के अंदर (एरो फंक्शन को छोड़कर) एक अंतर्निहित array-like ऑब्जेक्ट javascript arguments होता है। इसका उपयोग पास किए गए आर्गुमेंट्स की जांच के लिए किया जा सकता है:

\n\n
function showInfo(name, age) {\n    name = arguments.length > 0 ? name : 'अनाम';\n    age = arguments.length > 1 ? age : 'निर्दिष्ट नहीं';\n    return `${name}, उम्र: ${age}`;\n}\n\nconsole.log(showInfo()); // अनाम, उम्र: निर्दिष्ट नहीं
\n\n

फायदे: इस बात पर पूरा नियंत्रण देता है कि कौन से आर्गुमेंट पास किए गए।
\nनुकसान: सिंटैक्स पुराना है, एरो फंक्शन में काम नहीं करता। आमतौर पर केवल बहुत विशिष्ट कार्यों के लिए उपयोग किया जाता है (जैसे, जब पैरामीटर की संख्या पहले से ज्ञात न हो)।

\n\n

तरीका 3: आधुनिक मानक — ES6 डिफ़ॉल्ट पैरामीटर

\n\n

ECMAScript 2015 से शुरू करके, js में डिफ़ॉल्ट पैरामीटर को सीधे फंक्शन डिक्लेरेशन में सेट किया जा सकता है। यह सबसे साफ और अनुशंसित तरीका है:

\n\n
function multiply(a = 1, b = 2) {\n    return a * b;\n}\n\nconsole.log(multiply(5)); // 10\nconsole.log(multiply());  // 2
\n\n

सुंदर है, है ना? लेकिन कुछ महत्वपूर्ण बारीकियाँ हैं जिन्हें जानना ज़रूरी है ताकि गलती न हो।

\n\n

बारीकी 1: डिफ़ॉल्ट वैल्यू कॉल के समय कैलकुलेट होती हैं

\n\n

इसका मतलब है कि अगर आप undefined भेजते हैं — तो डिफ़ॉल्ट लागू होगा। अगर null भेजते हैं — तो नहीं:

\n\n
function test(x = 10) {\n    console.log(x);\n}\n\ntest(undefined); // 10 (डिफ़ॉल्ट लागू)\ntest(null);      // null (डिफ़ॉल्ट लागू नहीं)
\n\n

बारीकी 2: डिफ़ॉल्ट वैल्यू में एक्सप्रेशन और फंक्शन कॉल

\n\n

आप डिफ़ॉल्ट वैल्यू के रूप में किसी भी एक्सप्रेशन या फंक्शन कॉल का उपयोग कर सकते हैं:

\n\n
function getDefaultAge() {\n    return 18;\n}\n\nfunction registerUser(name, age = getDefaultAge()) {\n    console.log(`${name}, उम्र ${age}`);\n}\n\nregisterUser('राहुल'); // राहुल, उम्र 18
\n\n

यह विशेष रूप से तब उपयोगी है जब डिफ़ॉल्ट वैल्यू को डायनामिक रूप से कैलकुलेट करने की आवश्यकता होती है।

\n\n

तरीका 4: डिस्ट्रक्चरिंग के साथ डिफ़ॉल्ट पैरामीटर

\n\n

जब फंक्शन एक ऑब्जेक्ट को पैरामीटर के रूप में लेता है, तो आप डिस्ट्रक्चरिंग के साथ डिफ़ॉल्ट वैल्यू सेट कर सकते हैं:

\n\n
function createUser({ name = 'अतिथि', age = 18, city = 'दिल्ली' } = {}) {\n    console.log(`${name}, ${age} वर्ष, ${city} से`);\n}\n\ncreateUser({ name: 'प्रिया', age: 25 }); // प्रिया, 25 वर्ष, दिल्ली से\ncreateUser(); // अतिथि, 18 वर्ष, दिल्ली से
\n\n

यह तरीका विशेष रूप से तब उपयोगी है जब फंक्शन में कई वैकल्पिक पैरामीटर हों।

\n\n

तरीका 5: nullish coalescing (??) ऑपरेटर

\n\n

ES2020 में पेश किया गया nullish coalescing operator javascript केवल null या undefined के लिए डिफ़ॉल्ट वैल्यू सेट करता है, 0 या खाली स्ट्रिंग के लिए नहीं:

\n\n
function greet(name) {\n    name = name ?? 'अतिथि';\n    console.log('नमस्ते, ' + name);\n}\n\ngreet('राज');   // नमस्ते, राज\ngreet(0);       // नमस्ते, 0 (डिफ़ॉल्ट लागू नहीं)\ngreet(undefined); // नमस्ते, अतिथि
\n\n

यह || ऑपरेटर का एक सुरक्षित विकल्प है जब आप falsy वैल्यू को वैध मानना चाहते हैं।

\n\n

निष्कर्ष: कौन सा तरीका चुनें?

\n\n

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

\n\n

याद रखें: set a default parameter value for a JavaScript function सिर्फ एक अच्छी आदत नहीं है, बल्कि पेशेवर कोड लिखने का एक महत्वपूर्ण हिस्सा है। अपने फंक्शन को हमेशा डिफ़ॉल्ट वैल्यू के साथ सुरक्षित बनाएं!

ब्लॉग

पुस्तक अनुशंसाएँ