पैरामीटर बिना उपहार? JavaScript में डिफ़ॉल्ट वैल्यू को समझें
\n\nकल्पना करें कि आपने पिज़्ज़ा ऑर्डर किया। आप डिलीवरी पर कहते हैं: "मुझे एक पिज़्ज़ा दीजिए।" ऑपरेटर पूछता है: "कौन सा?" — "स्टैंडर्ड, चीज़ और सॉसेज वाला।" आपने यह भी नहीं सोचा कि पिज़्ज़ा के डिफ़ॉल्ट पैरामीटर होते हैं।
\n\nठीक वैसे ही JavaScript में: फंक्शन को अक्सर सभी आर्गुमेंट्स के बिना कॉल किया जाता है। और अगर प्रोग्रामर ने set a default parameter value for a JavaScript function का प्रावधान नहीं किया, तो कोड क्रैश हो सकता है या अनपेक्षित व्यवहार कर सकता है। इस लेख में हम JS में फंक्शन पैरामीटर के लिए डिफ़ॉल्ट वैल्यू सेट करने के सभी तरीकों को समझेंगे — पुराने तरीकों से लेकर ES6 के आधुनिक सिंटैक्स तक। चलिए शुरू करते हैं!
\n\nयह इतना महत्वपूर्ण क्यों है?
\n\nमान लीजिए, हमारे पास एक फंक्शन है जो उपयोगकर्ता का स्वागत करता है:
\n\nfunction greet(name) {\n console.log('नमस्ते, ' + name + '!');\n}\n\ngreet(); // आउटपुट: "नमस्ते, undefined!" — अजीब लगता है, है ना?\n\ndefault parameters javascript के बिना, न दिया गया आर्गुमेंट undefined हो जाता है। और अगर हम undefined पर कोई मेथड कॉल करने की कोशिश करें — तो एरर आएगी। इसलिए js में डिफ़ॉल्ट पैरामीटर सिर्फ सुविधा नहीं, बल्कि बग्स से बचाव है।
तरीका 1: क्लासिक — टर्नरी ऑपरेटर (या if)
\n\nES6 से पहले, डेवलपर्स javascript ternary operator या साधारण चेक का उपयोग करते थे। यह काम करता है, लेकिन कोड भारी लगता है:
\n\nfunction 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 पैरामीटर हों, तो पढ़ने में मुश्किल हो जाती है।
एक खास बात: undefined vs truthy चेक
\n\nकई शुरुआती ऐसे लिखते हैं:
\n\nfunction greet(name) {\n name = name || 'अतिथि';\n console.log('नमस्ते, ' + name);\n}\n\nयह तब तक काम करता है जब तक आप 0, खाली स्ट्रिंग '' या false नहीं भेजते। ये सभी वैल्यू falsy हैं, और फंक्शन इन्हें 'अतिथि' से बदल देगा। अगर आपको 0 को वैध वैल्यू के रूप में भेजना है — तो यह तरीका काम नहीं करेगा। undefined की सख्त जांच का उपयोग करें।
तरीका 2: जादुई ऑब्जेक्ट arguments
\n\nहर फंक्शन के अंदर (एरो फंक्शन को छोड़कर) एक अंतर्निहित array-like ऑब्जेक्ट javascript arguments होता है। इसका उपयोग पास किए गए आर्गुमेंट्स की जांच के लिए किया जा सकता है:
\n\nfunction 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नुकसान: सिंटैक्स पुराना है, एरो फंक्शन में काम नहीं करता। आमतौर पर केवल बहुत विशिष्ट कार्यों के लिए उपयोग किया जाता है (जैसे, जब पैरामीटर की संख्या पहले से ज्ञात न हो)।
तरीका 3: आधुनिक मानक — ES6 डिफ़ॉल्ट पैरामीटर
\n\nECMAScript 2015 से शुरू करके, js में डिफ़ॉल्ट पैरामीटर को सीधे फंक्शन डिक्लेरेशन में सेट किया जा सकता है। यह सबसे साफ और अनुशंसित तरीका है:
\n\nfunction 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 भेजते हैं — तो नहीं:
function test(x = 10) {\n console.log(x);\n}\n\ntest(undefined); // 10 (डिफ़ॉल्ट लागू)\ntest(null); // null (डिफ़ॉल्ट लागू नहीं)\n\nबारीकी 2: डिफ़ॉल्ट वैल्यू में एक्सप्रेशन और फंक्शन कॉल
\n\nआप डिफ़ॉल्ट वैल्यू के रूप में किसी भी एक्सप्रेशन या फंक्शन कॉल का उपयोग कर सकते हैं:
\n\nfunction 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\nfunction 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\nES2020 में पेश किया गया nullish coalescing operator javascript केवल null या undefined के लिए डिफ़ॉल्ट वैल्यू सेट करता है, 0 या खाली स्ट्रिंग के लिए नहीं:
function greet(name) {\n name = name ?? 'अतिथि';\n console.log('नमस्ते, ' + name);\n}\n\ngreet('राज'); // नमस्ते, राज\ngreet(0); // नमस्ते, 0 (डिफ़ॉल्ट लागू नहीं)\ngreet(undefined); // नमस्ते, अतिथि\n\nयह || ऑपरेटर का एक सुरक्षित विकल्प है जब आप falsy वैल्यू को वैध मानना चाहते हैं।
निष्कर्ष: कौन सा तरीका चुनें?
\n\nआधुनिक JavaScript में, ES6 डिफ़ॉल्ट पैरामीटर सबसे अच्छा विकल्प है। यह साफ, पढ़ने में आसान और कम त्रुटि-प्रवण है। पुराने तरीकों का उपयोग केवल तभी करें जब आपको पुराने ब्राउज़रों का समर्थन करना हो या विशिष्ट आवश्यकताएँ हों।
\n\nयाद रखें: set a default parameter value for a JavaScript function सिर्फ एक अच्छी आदत नहीं है, बल्कि पेशेवर कोड लिखने का एक महत्वपूर्ण हिस्सा है। अपने फंक्शन को हमेशा डिफ़ॉल्ट वैल्यू के साथ सुरक्षित बनाएं!