/ / जावास्क्रिप्ट: फ़ंक्शन में फ़ंक्शन। जेएस प्रोग्रामिंग भाषा

जावास्क्रिप्ट: समारोह में फ़ंक्शन जेएस प्रोग्रामिंग भाषा

वेब संसाधनों पर गतिशील सामग्री निर्माण के विचार आदर्श बन गए। स्टेटिक पेज और टेम्पलेट साइट निर्माण ने आखिरकार अपना मिशन पूरा कर लिया है।

हालांकि, एक आधुनिक वेब संसाधन को सर्वर द्वारा जेनरेट किए गए पृष्ठों के सेट द्वारा प्रदर्शित करने की आवश्यकता नहीं है और ब्राउज़र (जेएस + AJAX) द्वारा अपडेट किया गया है।

समारोह में जावास्क्रिप्ट समारोह

एक आगंतुक के आगमन के समय एक वेब संसाधन प्रोटोकॉल के लिए शीर्षकों की एक जोड़ी हो सकती है, "सिर" में कुछ पाठ, "शरीर" और सब कुछ में कोड की कई पंक्तियां हो सकती हैं। बाकी "एक सुराग के साथ आओ"आगंतुक के काम की प्रक्रिया में एक आदर्श साइट है या ऐसा होने का प्रयास कर रहा है।

विवरण और कार्यों का सार

जावास्क्रिप्ट है अनुभव कई दशकों से प्राप्त हुआ। उनके पास एक महत्वपूर्ण विकास इतिहास है, जो रचनाकारों-डेवलपर्स की एक आधुनिक योग्य टीम है। भाषा अच्छी तरह से सोचा, भरोसेमंद, सुंदर है और डेवलपर्स के लिए सभ्य कोड लिखने और खुद को सुधारने का असली मौका देता है।

जावास्क्रिप्ट त्रुटि ऑपरेशन असुरक्षित है

समारोह के बाहर एक एल्गोरिदम की अवधारणा यहां अनुपस्थित हैसिद्धांत। बेशक, डेवलपर पृष्ठ में कहीं भी एक स्क्रिप्ट डाल सकता है, इसमें कोड डालें और इसे निष्पादित किया जाएगा। लेकिन उस कोड में क्या बिंदु है जिसे केवल एक बार निष्पादित किया जाता है: लोड होने पर (अधिभार) पेज? जब तक कि किसी भी महत्वहीन चर के शुरुआती मूल्यों को स्थापित करना संभव न हो।

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

यह आवश्यक नहीं है कि समारोह होसीधे एक और फ़ंक्शन कॉल करें; इसे डायनामिक कोड पीढ़ी के माध्यम से अप्रत्यक्ष रूप से किया जा सकता है। आगंतुक इस कोड के ढांचे के भीतर एक निर्णय लेता है और कार्यों की पूरी तरह से अलग प्रणाली ट्रिगर होती है।

कार्यात्मक गतिशीलता

कार्यात्मक गतिशीलता न केवल हैपेज के तत्वों को सौंपा गया हैंडलर इतना नहीं है, ये वे कार्य हैं जो पृष्ठ के तत्व बनाते हैं, और तत्काल हैंडलर भी बदल सकते हैं।

जावास्क्रिप्ट वापसी

पृष्ठ पर कार्रवाई इसके तत्वों और विज़िटर के व्यवहार के आधार पर सामने आती है। माउस मूवमेंट्स, कीबोर्ड बटन, क्लिक, आइटम इवेंट और अन्य परिस्थितियां वांछित कार्यों के लॉन्च की ओर ले जाती हैं।

प्रारंभ में कोई स्थिरता नहीं है औरकोई समांतरता नहीं है। घटनाओं के लिए एक वेब संसाधन की पर्याप्त प्रतिक्रिया है। जावास्क्रिप्ट कितनी तेज़ी से एक विशेष फ़ंक्शन निष्पादित करता है, कई तकनीकी (कंप्यूटर, संचार लाइन) और अर्थपूर्ण (एल्गोरिदम तर्क, विषय क्षेत्र, कार्य अर्थ) कारकों पर निर्भर करता है।

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

यह विकास में एक नई सोच है: एक ब्राउज़र की गहराई में वितरित सूचना प्रसंस्करण!

चर और कार्यों का सिंटेक्स

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

एक फ़ंक्शन विवरण आम तौर पर कीवर्ड "फ़ंक्शन" के साथ शुरू होता है, उसके नाम के बाद, कोमा द्वारा अलग किए गए कोष्ठक में तर्कों की एक सूची और घुंघराले ब्रैकेट में फ़ंक्शन बॉडी।

काम करने के लिए जावास्क्रिप्ट पास समारोह

यह उदाहरण दो कार्यों का वर्णन करता है जो पृष्ठ और सर्वर के बीच AJAX विनिमय प्रदान करते हैं। एससीएक्सएचआर वैरिएबल ऊपर वर्णित है, इसलिए यह इनिटएक्सएमएल और वेट्रिप्लीएससी के अंदर दोनों उपलब्ध है।

फ़ंक्शन का नाम और पैरामीटर "फ़ंक्शन"

एक एसिंक्रोनस संस्करण यहां प्रस्तुत किया गया था, कबसर्वर प्रतिक्रिया के बाद फ़ंक्शन में जावास्क्रिप्ट फ़ंक्शन को कॉल किया जाता है। साथ ही, सर्वर से प्रतिक्रिया प्राप्त करने के बाद, WaitReplySC पृष्ठ के टैग को संदर्भित करता है, उन्हें प्राप्त जानकारी के साथ भरता है और अन्य कार्यों को कॉल करता है जो सर्वर के अगले अनुरोध को अच्छी तरह से शुरू कर सकते हैं।

यह भी ध्यान रखना महत्वपूर्ण है कि WaitReplySC एक कार्य है। लेकिन लाइन में scXHR.onreadystatechange = WaitReplySC यह एक पैरामीटर के रूप में पारित किया जाता है। पैरामीटर के रूप में अन्य कार्यों के कार्यों को स्थानांतरित करने के लिए यह एक सामान्य नियम है। मैंने कोष्ठक निर्दिष्ट किए हैं और उनके पैरामीटर (पैरामीटर) को पास कर दिया है - फ़ंक्शन तुरंत निष्पादित किया जाएगा। उसने केवल नाम पारित किया, तो उसके साथ क्या। फंक्शन कॉल उस व्यक्ति द्वारा किया जाएगा जिसने अपना नाम प्राप्त किया था।

AJAX के माध्यम से कार्यान्वित कार्यक्षमता आपको प्रदर्शन करने की अनुमति देती है सर्वर से प्राप्त डेटा के माध्यम से जावास्क्रिप्ट फ़ंक्शन को कॉल करें। वास्तव में, सर्वर को एक अनुरोध भेजना, एक या किसी अन्य फ़ंक्शन को "पता" बिल्कुल नहीं हो सकता है कि यह किस फ़ंक्शन तक पहुंच रहा है और क्या जानकारी है।

फ़ंक्शन और उसके परिणाम से बाहर निकलें

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

जावास्क्रिप्ट फ़ंक्शन कॉल

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

आमतौर पर, डेवलपर्स इस अवसर का बहुत सम्मान करते हैं और, स्थिति के आधार पर, जितनी जल्दी हो सके फ़ंक्शन से बाहर निकलने का निर्णय लेते हैं।

फ़ंक्शन के पूरे एल्गोरिथ्म के माध्यम से चलाने के लिए आवश्यक नहीं है जब पहले से बाहर निकलना संभव हो।

तर्क वितर्क

फ़ंक्शन के तर्क सूची के माध्यम से पारित किए जाते हैंअल्पविराम, कोष्ठकों में संलग्न है और इसके नाम के तुरंत बाद हैं। परिवर्तनीय नामों का उपयोग तर्कों के रूप में किया जाता है, लेकिन आप सीधे मान भी पास कर सकते हैं। जावास्क्रिप्ट में एक समारोह में एक समारोह पास करने के लिए, आपको बस इसके नाम को कोष्ठक के बिना निर्दिष्ट करना होगा।

जावास्क्रिप्ट चर

फ़ंक्शन के अंदर, तर्क चर उपलब्ध है, एक संपत्ति है लंबाई। आप किसी भी फ़ंक्शन तर्क को तर्कों [0], तर्कों [1], ... के अंतिम तर्क तक [तर्कों .length-1] का उल्लेख कर सकते हैं।

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

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

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

कार्यों का उपयोग

मुख्य कार्य चिंता इवेंट सर्विसिंग है।ब्राउज़र। ऐसा करने के लिए, लगभग हर टैग में उस घटना का नाम और फ़ंक्शन को निर्दिष्ट करने की क्षमता है जो इसे संसाधित करता है। आप कई ईवेंट निर्दिष्ट कर सकते हैं, लेकिन प्रत्येक ईवेंट के लिए केवल एक फ़ंक्शन निर्दिष्ट है।

एक फ़ंक्शन कई पृष्ठ तत्वों और कई घटनाओं की सेवा कर सकता है। "इस" पैरामीटर का उपयोग करते हुए, आप उस फ़ंक्शन को जानकारी स्थानांतरित कर सकते हैं जहां से इसे बुलाया गया था।

जेएस कार्यों के क्लासिक उपयोग -तत्वों पर घटना संचालकों। इस उदाहरण में, scfWecomeGo () या scfWelcomeCancel () फ़ंक्शन को विज़िटर के लॉगिन / निकास फ़ॉर्म में बुलाया जाएगा, और जब आप ऑपरेटिंग मोड का चयन करेंगे, तो scfMenuItemClick (यह)।

जावास्क्रिप्ट वापसी

बाद के मामले में, पैरामीटर "यह" है,जो आपको चमत्कारी रूप से यह पता लगाने की अनुमति देता है कि कॉल किस दिवा से उत्पन्न हुई है। सामान्य तौर पर, JavaScript को DOM में गुणात्मक रूप से प्रत्यारोपित किया जाता है और आवश्यक जानकारी एकत्र करने के लिए, उसके तत्वों के माध्यम से नेविगेट करना इतना सुविधाजनक होता है, कि पृष्ठ की गतिशीलता अप्रत्याशित हो सकती है।

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

पृष्ठ पर इस तरह के एक तत्व को रखने से, डेवलपर एक नई कार्यक्षमता बनाता है, जो समस्या को हल करने और आगंतुकों के हितों को पूरा करने के मामले में अच्छा है, लेकिन कार्यान्वयन के मामले में मुश्किल है।

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

वितरित सोच के बारे में

डेवलपर को पृष्ठ के सभी तत्वों के स्तर पर, सभी घटनाओं के स्तर पर और एक स्पष्ट विचार रखना होगा कि वास्तव में सब कुछ कैसे होता है। यह मुश्किल है, लेकिन यह काम इसके लायक है।

जावास्क्रिप्ट सरणी फ़ंक्शन

जावास्क्रिप्ट में, एक फ़ंक्शन का निष्पादन हो सकता हैकुछ घटना तक स्थगित, और ऐसे कई कार्य हो सकते हैं, और यहां तक ​​कि घटनाएं विभिन्न हैंडलर के "दायरे" में फैलने और गिरने लगती हैं।

जावास्क्रिप्ट त्रुटि ऑपरेशन असुरक्षित है

इस उदाहरण में, कहीं पहले कहा जाता हैफ़ंक्शन जो फ़ाइल नेविगेशन मेनू आइटम के निर्माण की शुरुआत करता है। पेजिंग संगठन मान लिया गया है, अर्थात्, विंडो में केवल सात फाइलें हैं जिन्हें हटाया और संसाधित किया जा सकता है। आप फ़ाइल स्ट्रिंग पर, या कीबोर्ड पर तीर द्वारा, या सात लाइनों के ब्लॉक में जाकर नेविगेट कर सकते हैं।

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

जावास्क्रिप्ट फ़ंक्शन निष्पादन

उदाहरण के लिए, किसी स्ट्रिंग को हटाते समय, तल को नीचे होना चाहिएऊपर चलो। ऐसा करने के लिए, आपको या तो एक नया चयन करना होगा, जो संसाधनों के संदर्भ में ट्राइट और कैपेसिटिव है, या लाइनों को पुनर्गणना करता है, जावास्क्रिप्ट पर फ़ंक्शन के फ़ंक्शन का उपयोग करता है और सुरुचिपूर्ण ढंग से लक्ष्य को प्राप्त करता है।

तर्क और कार्यों के परिणाम

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

यह एक अच्छा तंत्र है, लेकिन कार्यान्वयन के मामले में जटिल है। तकनीकी रूप से, सब कुछ अनुमेय है, शब्दार्थ "कार्यक्षमता" को स्थानांतरित करने के तर्क को सुनिश्चित करना केवल एक योग्य डेवलपर के लिए संभव है।

काम करने के लिए जावास्क्रिप्ट पास समारोह

जब जावास्क्रिप्ट समारोह में कार्य करता है - जहां भीचला गया, लेकिन जब एक फ़ंक्शन किसी फ़ंक्शन को जन्म देता है, और वह एक और, तो तर्क का ट्रैक रखना काफी मुश्किल है। वास्तव में, प्रश्न योग्यता को लागू करने का नहीं है, प्रश्न सुरक्षित और सही परिणाम प्राप्त करने का है।

डेवलपर की देखभाल स्पष्ट और सरल है। एक कार्य है, आपको एक समाधान की आवश्यकता है, "जावास्क्रिप्ट त्रुटि ऑपरेशन असुरक्षित है" जैसी त्रुटि नहीं, एक साफ स्क्रीन या संपूर्ण ब्राउज़र इंजन का एक स्टॉप।

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

उत्पन्न कोड का निष्पादन

में उत्पन्न कोड के निष्पादन को लागू करेंएक और कोड की प्रक्रिया, यह "eval" के माध्यम से संभव है यह एक उत्कृष्ट समाधान नहीं माना जाता है, लेकिन आप अक्सर अनावश्यक कार्यों के साथ कोड को जटिल नहीं कर सकते हैं, लेकिन अपने आप को जावास्क्रिप्ट कोड की एक लाइन के प्रतिबंध के गठन के लिए सीमित करें और बस इसे निष्पादित करें।

फ़ंक्शन जावास्क्रिप्ट फ़ंक्शन लौटाता है

इस उदाहरण में, सम्मिलित स्ट्रिंग में बनाई गई हैअभिनय div कुछ जानकारी। दिवा संख्या और सूचना सामग्री विभिन्न पदों के लिए अलग-अलग हैं, इसलिए इस स्थिति में इस तरह के समाधान की गारंटी दी जाती है कि "जावास्क्रिप्ट त्रुटि ऑपरेशन असुरक्षित है" स्थिति प्रदान करने के लिए नहीं है, लेकिन यह मज़बूती से वांछित प्रभाव देगा।

लेखक का उदाहरण चित्र नहीं है।

जावास्क्रिप्ट प्रतिमान की बारीकियों "समारोह में समारोह"

यदि बिना अधिकता के करने का अवसर है, तो इसका उपयोग करना बेहतर है। सूचीबद्ध सभी विकल्प अच्छे हैं। बेशक, कई मामलों में यह एकमात्र समाधान है।

पुनरावर्तन का क्लासिक उदाहरण: फैक्टोरियल कंप्यूटिंग। एक एल्गोरिथ्म लिखना मुश्किल है जो लूप करेगा, लेकिन मूल्य की सीमा से परे जाना बहुत सरल है। फैक्टरियल बहुत तेजी से बढ़ रहा है।

हालांकि, रिकर्सन और फ़ंक्शन दोनों जो किसी अन्य फ़ंक्शन को कॉल करते हैं जो एक वैध कॉलबैक कर सकते हैं वे चीजों का आदर्श हैं।

उदाहरण के लिए, एक नियमित तालिका। तालिका में अन्य तालिकाएँ हो सकती हैं। घोंसला सीमित नहीं हो सकता। प्रत्येक तालिका के लिए कार्यों का एक सेट लिखना बहुत अधिक लक्जरी है।

ऐसे कई उदाहरण हैं, और सभीये वास्तविक और जरूरी कार्य होंगे, प्रोग्रामिंग के क्षेत्र से बिल्कुल नहीं। यही कारण है कि समस्या इस तथ्य में सटीक रूप से निहित है कि आप ज्यादतियों के बिना नहीं कर सकते हैं, कार्यों की बनाई गई प्रणाली, अधिक सटीक रूप से, इसकी डिबगिंग और बाद में विश्वसनीय कार्य जावास्क्रिप्ट की नहीं बल्कि डेवलपर की चिंता बन जाती है।

</ p>>
और पढ़ें: