अधिकतम कॉल स्टैक आकार जावास्क्रिप्ट से अधिक हो गया

| | | | | | | | | | | | | | | | | |

यह हुआ। आप थोड़ा कोड करते हैं और आपको अपने कंसोल में या क्रोम डेवलपर टूल में एक त्रुटि मिलती है जो इंगित करती है कि अनकॉटेड रेंज एरर: कॉल स्टैक का अधिकतम आकार पार हो गया है‚Ķ एक ट्रेस के साथ। इसका क्या मतलब है?

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

यहां कोड का एक उदाहरण दिया गया है जो इस त्रुटि को उत्पन्न करेगा:

<इनपुट प्रकार =" छिपा हुआ "नाम =" ck_source "value =" करियरकर्म-वेब "> <इनपुट टाइप = "हिडन" नाम = "सीके_मीडियम" वैल्यू = "ब्लॉग"> <इनपुट टाइप = "हिडन" नाम = "सीके_कैंपेन" वैल्यू = "एफटी-एक्सप्रेस-डब्ल्यूजीटी-ब्लॉग"> <इनपुट टाइप = "हिडन" नाम = " प्रवाह" मान = "एसएफटी"> <बटन प्रकार = "सबमिट" आईडी = "सबमिट 4" वर्ग = "बीटीएन बीटीएन-सफलता बीटीएन-ब्लॉक बटन-एजेक्स-फॉर्म" शैली = "पृष्ठभूमि-रंग: # ff9d38! जरूरी; सीमा रंग: # ff9d38; अस्पष्टता: 1; सफेद रंग; चौड़ाई: 100%; फोंट की मोटाई: बोल्ड; फ़ॉन्ट आकार: 13px; "> एक मैच प्राप्त करें <स्क्रिप्ट प्रकार = "पाठ / जावास्क्रिप्ट"> jQuery (`# contactForm2`)। सबमिट करें (फ़ंक्शन (ईवेंट) {var फ़ोन = jQuery (`# msg_phone`)। वैल (); फ़ोन = फ़ोन। बदलें (// $ /, ``) .replace (`+ (`, ``) .replace ( `) +`, ``) .replace (``, ``) .replace (`+ -`, ``) .replace (`-`, ``) .replace (`(`, ``) .replace (`)`, ``) .replace (`.`, ``); phone = phone.replace (``, ``); phone = phone .replace (``, ``); var otherphone = phone. सबस्ट्रिंग (2); अगर (अन्य फोन। विभाजित (``) .e बहुत (चार => चार === अन्य फोन [0])) {jQuery (`# त्रुटि_फोन`)। दिखाएँ (); झूठा रिटर्न; } और { var phoneField = jQuery (`# msg_phone`); phoneField.removeAttr ("अधिकतम लंबाई"); phoneField.removeAttr ("स्कीमा"); phoneField.val (फ़ोन); सच लौटाता है; }}) <शैली मीडिया = "सभी"> घंटा {रंग: # 000; ऊंचाई: 3px}

हमें कोड ब्लॉक को रुकने की जगह देनी होगी। ऐसा करने के लिए, हमें एक सशर्त विवरण जोड़ना होगा जो फ़ंक्शन का "बेस केस" होगा। यह रिकर्सन के बंद होने का संकेत देगा। = 0) {// c ` हमारा आधार मामला है और कोड को निष्पादित करना बंद करने का संकेत देगा। कंसोल.लॉग ("लिफ्टिंग!"); रिटर्न "ÔöÄ"; } कंसोल.लॉग (एन) वापसी पुनरावर्ती उदाहरण (एन -1); } कंसोल.लॉग (पुनरावर्ती उदाहरण (10));

यदि आप इसका उपयोग करने की योजना बना रहे हैं तो अपने पुनरावर्ती फ़ंक्शन में आधार केस जोड़ना न भूलें। यह आपको इस तरह की गलती करने से रोकेगा!