Javaस्क्रिप्ट परिभाषित करें और उदाहरण के साथ फ़ंक्शन कॉल करें

⚡ स्मार्ट सारांश

Javaस्क्रिप्ट फ़ंक्शन कोड के पुन: प्रयोज्य ब्लॉकों का समूह बनाते हैं जो केवल कॉल किए जाने पर ही चलते हैं, और यह वॉकथ्रू दिखाता है कि एक स्क्रिप्ट फ़ंक्शन को कैसे घोषित किया जाए, उसमें तर्क कैसे पास किए जाएं और कॉलर को एक मान कैसे लौटाया जाए।

  • 🔘 सिंटेक्स: प्रत्येक क्लासिक फंक्शन को फंक्शन कीवर्ड, नाम, कोष्ठक और घुंघराले ब्रैकेट द्वारा परिभाषित किया जाता है।
  • कॉलिंग: Code किसी फ़ंक्शन के अंदर का कोड तभी निष्पादित होता है जब फ़ंक्शन का नाम कोष्ठक के साथ दिया जाता है।
  • तर्क: कोष्ठकों के भीतर रखे गए मान कॉलर से फ़ंक्शन बॉडी में डेटा पास करते हैं।
  • 🧪 वापसी: रिटर्न कीवर्ड कॉलर को एक मान वापस भेजता है और उस बिंदु पर निष्पादन को रोक देता है।
  • प्रकार: घोषणाएँ, अभिव्यक्तियाँ, एरो फ़ंक्शन, आईआईएफई और कॉलबैक, ये सभी अलग-अलग स्थितियों के लिए उपयुक्त होते हैं।
  • 📊 दायरा: फंक्शन डिक्लेरेशन को होस्ट किया जाता है, जबकि फंक्शन एक्सप्रेशन और एरो फंक्शन को होस्ट नहीं किया जाता है।

Javaस्क्रिप्ट में फ़ंक्शन परिभाषित करना और उन्हें कॉल करना

फंक्शन क्या है? Javaलिखी हुई कहानी?

किसी भी प्रोग्रामिंग भाषा में फ़ंक्शन बहुत महत्वपूर्ण और उपयोगी होते हैं क्योंकि वे कोड को पुन: उपयोग करने योग्य बनाते हैं। फ़ंक्शन कोड का एक ब्लॉक होता है जो केवल तभी निष्पादित होता है जब उसे कॉल किया जाता है। यदि आपके पास कोड की कुछ पंक्तियाँ हैं जिन्हें कई बार उपयोग करने की आवश्यकता है, तो आप उन दोहराई जाने वाली पंक्तियों को शामिल करके एक फ़ंक्शन बना सकते हैं और फिर जहाँ चाहें उस फ़ंक्शन को कॉल कर सकते हैं।

कोष्ठकों के अंदर कुछ भी अपने आप नहीं चलता। ब्राउज़र ब्लॉक को आपके द्वारा दिए गए नाम से संग्रहीत करता है, और कोड तभी निष्पादित होता है जब उस नाम के बाद कोष्ठक लिखे जाते हैं, जैसे कि myFunction()इसलिए, कार्य प्रत्येक कार्य के केंद्र में स्थित होते हैं। Javaलिपि प्रोग्राम, चाहे स्क्रिप्ट जीवित हो पृष्ठ के अंदर या किसी बाहरी फ़ाइल में.

में फ़ंक्शन कैसे बनाएं Javaलिपि

  1. कीवर्ड का उपयोग करें समारोह इसके बाद फ़ंक्शन का नाम आता है।
  2. फ़ंक्शन नाम के बाद, कोष्ठक खोलें और बंद करें.
  3. कोष्ठक के बाद, घुंघराले ब्रेसेज़ को खोलें और बंद करें।
  4. कर्ली ब्रैकेट्स के भीतर, कोड की अपनी पंक्तियां लिखें।

सिंटेक्स:

function functionname()
{

  lines of code to be executed

}

नीचे दिया गया उदाहरण परिभाषित करता है myFunction() और फिर इसे अगली ही पंक्ति में कॉल करता है, जिससे पेज लोड होते ही संदेश दिखाई देता है। इसे स्वयं आजमाकर देखें:

<html>
<head>
	<title>Functions!!!</title>
	<script type="text/javascript">
      function myFunction()
      {
      	document.write("This is a simple function.<br />");
      }
		myFunction();
	</script>
</head>
<body>
</body>
</html>

तर्कों के साथ फ़ंक्शन

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

सिंटेक्स:

function functionname(arg1, arg2)

{

  lines of code to be executed

}

यहाँ countVowels() यह ऐप आगंतुक द्वारा प्रॉम्प्ट में टाइप किए गए नाम को प्राप्त करता है, प्रत्येक अक्षर से होकर गुजरता है, और बताता है कि नाम में कितने स्वर हैं। इसे स्वयं आजमाकर देखें:

<html>
<head>
	<script type="text/javascript">
		var count = 0;
		function countVowels(name)
		{
			for (var i=0;i<name.length;i++)
			{
              if(name[i] == "a" || name[i] == "e" || name[i] == "i" || name[i] == "o" || name[i] == "u")
              count = count + 1;
			}
		document.write("Hello " + name + "!!! Your name has " + count + " vowels.");
		}
   	 	var myName = prompt("Please enter your name");
    	countVowels(myName);
	</script>
</head>
<body>
</body>
</html>

Javaस्क्रिप्ट वापसी मान

आप JS फ़ंक्शन भी बना सकते हैं जो मान लौटाते हैं। फ़ंक्शन के अंदर, आपको कीवर्ड का उपयोग करना होगा वापसी इसके बाद लौटाया जाने वाला मान आता है।

सिंटेक्स:

function functionname(arg1, arg2)

{

  lines of code to be executed

  return val1;

}

इस अंतिम उदाहरण में returnSum() यह फ़ंक्शन कुल योग को उस फ़ंक्शन को वापस भेज देता है जिसने इसे कॉल किया था, ताकि परिणाम को फ़ंक्शन के अंदर प्रिंट करने के बजाय एक वाक्य में जोड़ा जा सके। इसे स्वयं आज़माएँ:

<html>
<head>
	<script type="text/javascript">
		function returnSum(first, second)
        {
          var sum = first + second;
          return sum;
        }
      var firstNo = 78;
      var secondNo = 22;
      document.write(firstNo + " + " + secondNo + " = " + returnSum(firstNo,secondNo));
	</script>
</head>
<body>
</body>
</html>

कार्यों के प्रकार Javaलिपि

ऊपर दिए गए तीनों उदाहरणों में क्लासिक फ़ंक्शन घोषणा का उपयोग किया गया है, फिर भी आधुनिक Javaस्क्रिप्ट कई अन्य रूप भी प्रदान करती है। इनमें मुख्य अंतर यह है कि इंजन इन्हें उठाता है या नहीं और प्रत्येक रूप इनके साथ कैसा व्यवहार करता है। this कीवर्ड।

फ़ंक्शन प्रकार सामान्य वाक्यविन्यास इसका प्रयोग कब किया जाता है
समारोह घोषणा फ़ंक्शन अभिवादन() { } नामयुक्त, पुन: प्रयोज्य तर्क; अपने दायरे के शीर्ष पर पहुँचाया गया
फ़ंक्शन अभिव्यक्ति const greet = function () { }; किसी फ़ंक्शन को वेरिएबल में स्टोर करना; होस्ट नहीं किया गया
एरो फंक्शन (ES6) const greet = () => { }; संक्षिप्त कॉलबैक; यह आसपास के स्कोप से इसे इनहेरिट करता है
अनाम फ़ंक्शन setTimeout(function () { }, 100); एक बार उपयोग होने वाला लॉजिक सीधे दूसरे फ़ंक्शन में पारित किया जाता है
आईआईएफई (समारोह () { })(); यह तुरंत चलता है और अपने वेरिएबल्स को गोपनीय रखता है।
कॉलबैक आइटम.प्रत्येक के लिए (आइटम दिखाएँ); एक फ़ंक्शन जिसे दूसरे फ़ंक्शन को सौंपा जाता है और बाद में कॉल किया जाता है।

ऊपर दिए गए उदाहरणों पर ध्यान दें: ऐतिहासिक नमूनों का उपयोग var और document.write()और ये दोनों अभी भी हर ब्राउज़र में चलते हैं। वर्तमान अभ्यास में वेरिएबल्स को इस प्रकार घोषित किया जाता है। let or const और इसके माध्यम से आउटपुट प्रिंट करता है console.log() या सेटिंग द्वारा textContent किसी तत्व पर, क्योंकि document.write() यह उस पेज को मिटा देता है जो पहले ही लोड हो चुका है। type="text/javascript" HTML5 में एट्रीब्यूट भी वैकल्पिक है।

फ़ंक्शन पैरामीटर, तर्क और डिफ़ॉल्ट मान

पैरामीटर परिभाषा में सूचीबद्ध प्लेसहोल्डर नाम होते हैं, जबकि आर्गुमेंट वे वास्तविक मान होते हैं जो फ़ंक्शन को कॉल करते समय प्रदान किए जाते हैं। countVowels(name) ऊपर, name यहां पैरामीटर है और प्रॉम्प्ट में टाइप किया गया टेक्स्ट आर्गुमेंट है।

function greet(user, greeting = "Hello")
{
  return greeting + ", " + user;
}

greet("Ann");
greet("Ann", "Welcome");
  • बिना मिलान वाले तर्क वाला पैरामीटर बन जाता है undefined जब तक कोई डिफ़ॉल्ट मान प्रदान नहीं किया जाता है, तब तक greeting यहाँ है.
  • अतिरिक्त तर्कों को पैरामीटर सूची द्वारा अनदेखा कर दिया जाता है, लेकिन वे इसके माध्यम से पहुंच योग्य बने रहते हैं। arguments किसी भी गैर-एरो फ़ंक्शन के अंदर ऑब्जेक्ट।
  • एक रेस्ट पैरामीटर जिसे इस प्रकार लिखा जाता है ...values शेष सभी तर्कों को एक वास्तविक रूप में एकत्रित करता है सरणी.

कार्यक्षेत्र और उत्थापन Javaलिपि

किसी फ़ंक्शन को कहाँ लिखा जाता है, यह निर्धारित करता है कि वह क्या देख सकता है और उसे कब कॉल किया जा सकता है। दो नियम लगभग हर उस आश्चर्य की व्याख्या करते हैं जिसका सामना शुरुआती लोग करते हैं।

  • उत्थापन: स्क्रिप्ट चलने से पहले फ़ंक्शन घोषणाओं को उनके स्कोप के शीर्ष पर ले जाया जाता है, इसलिए उन्हें उनकी परिभाषा से ऊपर वाली पंक्ति पर भी कॉल किया जा सकता है। फ़ंक्शन एक्सप्रेशन और एरो फ़ंक्शन को होस्ट नहीं किया जाता है और यदि उन्हें पहले कॉल किया जाता है तो वे त्रुटि उत्पन्न करते हैं।
  • दायरा: घोषित चर var किसी फ़ंक्शन के अंदर की जानकारी उस फ़ंक्शन में हर जगह दिखाई देती है, जबकि let और const ये फ़ंक्शन उसी ब्लॉक तक सीमित होते हैं जिसमें वे स्थित होते हैं। किसी भी फ़ंक्शन के बाहर घोषित की गई कोई भी चीज़ वैश्विक होती है।

स्वर प्रतिरूप इसे व्यवहार में दर्शाता है। count वेरिएबल को फ़ंक्शन के बाहर घोषित किया गया है, इसलिए कॉलिंग countVowels() उसी पृष्ठ पर दूसरी बार ऐसा करने पर शून्य से पुनः आरंभ होने के बजाय पहले के कुल योग में वृद्धि जारी रहती है। घोषणा को फ़ंक्शन के अंदर ले जाने से प्रत्येक कॉल पर यह रीसेट हो जाएगा।

ये स्कोping ये नियम सर्वर-साइड कोड पर भी लागू होते हैं, इसीलिए फ़ंक्शन लिखते समय भी यही तर्क लागू होता है। Node.jsऔर फ़ंक्शन व्यवहार इतनी बार क्यों दिखाई देता है Javaसाक्षात्कार के लिए पूछे जाने वाले प्रश्नों की पटकथा.

अक्सर पूछे जाने वाले प्रश्न

फ़ंक्शन अभी भी चलता है, लेकिन यह वापस कुछ लौटा देता है। undefinedउस कॉल को एक वेरिएबल में असाइन करने से वह डेटा स्टोर हो जाता है। undefinedइसीलिए योग के उदाहरण में फंक्शन बॉडी के अंदर कुल योग को प्रिंट करने के बजाय रिटर्न का उपयोग किया गया है।

एआई सहायक किसी टिप्पणी से फ़ंक्शन बॉडी का सुझाव दे सकते हैं, किसी अपरिचित कॉलबैक को पंक्ति दर पंक्ति समझा सकते हैं और परीक्षण इनपुट प्रस्तावित कर सकते हैं। सुझाव को हमेशा चलाएँ, क्योंकि उत्पन्न कोड चुपचाप किसी ऐसे वेरिएबल या ब्राउज़र एपीआई को मान सकता है जो पृष्ठ द्वारा प्रदान नहीं किया गया है।

आमतौर पर हां। गिटहब कोपिलॉट संदर्भ से एरो सिंटैक्स और सामान्य कॉलबैक पैटर्न को पूरा करता है। मान की जाँच करें। this परिणामस्वरूप, क्योंकि एक एरो फंक्शन इसे इनहेरिट करता है जबकि एक क्लासिक फंक्शन एक्सप्रेशन ऐसा नहीं करता है।

क्लोज़र एक ऐसा फ़ंक्शन है जो अपने निर्माण के समय संदर्भित बाहरी वेरिएबल्स के साथ बंडल किया जाता है। आंतरिक फ़ंक्शन बाहरी फ़ंक्शन के समाप्त होने के बाद भी उन वेरिएबल्स को पढ़ता रहता है, इसी प्रकार निजी काउंटर और फ़ैक्टरी फ़ंक्शन बनाए जाते हैं।

जी हां, और इसे ही रिकर्सन कहते हैं। फंक्शन में एक बेस केस होना चाहिए जो चेन को रोक दे, अन्यथा कॉल स्टैक खत्म होने पर ब्राउज़र रेंज एरर देता है। रिकर्सन ट्री वॉकिंग और फैक्टोरियल जैसी समस्याओं के लिए उपयुक्त है।

एक एसिंक्रोनस फ़ंक्शन हमेशा प्रॉमिस लौटाता है। इसके अंदर, await फ़ंक्शन को तब तक रोक देता है जब तक कि प्रतीक्षित प्रॉमिस पूरा नहीं हो जाता, जिससे एसिंक्रोनस कोड ऊपर से नीचे तक पढ़ पाता है। फ़ंक्शन के प्रतीक्षा करते समय पेज का बाकी हिस्सा प्रतिक्रिया देता रहता है।

इसे इवेंट लिसनर से जोड़ें: बटन का चयन करें, फिर इवेंट नाम और फ़ंक्शन संदर्भ के साथ addEventListener को कॉल करें। पुराना इनलाइन onclick एट्रिब्यूट भी काम करता है, हालांकि अब मार्कअप को व्यवहार से अलग करना बेहतर है।

कोष्ठक लगाने से यह तुरंत कॉल हो जाता है और इसका परिणाम मिलता है। केवल नाम लिखने से ही फ़ंक्शन पास हो जाता है, जो कि कॉलबैक के लिए आवश्यक है। setTimeout के अंदर गलती से कोष्ठक लगाने से कोड तुरंत चलने लगता है, बाद में नहीं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: