addEventListener समारोह एक समारोह या किसी वस्तु दूसरा तर्क, नहीं एक समारोह कॉल के रूप में EventListener
को लागू करने की उम्मीद है।
जब ()
फ़ंक्शन नाम में जोड़े जाते हैं, तो यह फ़ंक्शन के बजाए एक फ़ंक्शन आमंत्रण होता है।
संपादित करें: जैसा कि अन्य प्रतिक्रियाओं और टिप्पणियों में दर्शाया गया है, जावास्क्रिप्ट में कार्यों को वापस करना संभव है।
तो, कुछ दिलचस्प के लिए, हम निम्नलिखित कोशिश कर सकते हैं। मूल myAlert
से, हम यह एक छोटे से एक अलग संदेश लौटने के लिए बदल सकते हैं मापदंडों के आधार पर:
function myAlert(msg)
{
return function()
{
alert("Message: " + msg);
}
}
इधर, सूचना है कि समारोह वास्तव में एक समारोह देता है। इसलिए, उस समारोह को आमंत्रित करने के लिए, अतिरिक्त ()
आवश्यक होगा।
मैंने उपरोक्त फ़ंक्शन का उपयोग करने के लिए एक छोटा HTML और जावास्क्रिप्ट लिखा था। (कृपया मेरी अशुद्ध HTML और Javascript बहाना, के रूप में यह मेरे डोमेन नहीं है):
<script type="text/javascript">
function myAlert(msg)
{
return function()
{
alert("Message: " + msg);
}
}
</script>
<html>
<body>
<form>
<input type="button" value="Button1" onclick="myAlert('Clicked Button1')()">
<input type="button" value="Button2" onclick="myAlert('Clicked Button2')()">
</form>
</body>
</html>
दो बटन दिखाए जाते हैं, और प्रत्येक एक अलग पैरामीटर के साथ myAlert
समारोह कॉल करेंगे। एक बार myAlert
फ़ंक्शन को कॉल करने के बाद, यह स्वयं एक और function
लौटाएगा ताकि इसे ब्रांड्स के अतिरिक्त सेट के साथ बुलाया जाना चाहिए।
अंतिम परिणाम Button1
पर क्लिक संदेश Message: Clicked Button1
के साथ एक संदेश बॉक्स दिखाई देगा, जबकि Button2
पर क्लिक एक संदेश बॉक्स Message: Clicked Button2
कह दिखाई देगा, है।
हू। "फ़ंक्शन() {वापसी 1;}();" एक वाक्यविन्यास त्रुटि है, लेकिन "(फ़ंक्शन() {वापसी 1;}())" नहीं है। मूर्खतापूर्ण जावास्क्रिप्ट और आपके अलग फ़ंक्शन स्टेटमेंट्स और एक्सप्रेशन ... –
@ सिमॉन: "फ़ंक्शन() {वापसी 1;}();" केवल एक वाक्यविन्यास त्रुटि है जब एक चर को आवंटित नहीं किया जाता है। –