सिंटैक्स के अलावा दोनों के बीच अतिरिक्त अंतर मौजूद हैं।

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

मूल रूप से, समारोह कीवर्ड का उपयोग किया गया था, और बाद में, एरो सिंटैक्स बनाया गया था। हालांकि स्कोप एक्सेसिबिलिटी में भिन्नता है, फंक्शन कीवर्ड और एरो सिंटैक्स दोनों समान परिणाम बनाते हैं।

दोनों के बीच अंतर करने में असमर्थता के कारण समस्याएँ हो सकती हैं और गलत उपयोग हो सकता है। आधुनिक जेएस डेवलपर के लिए यह समझना जरूरी है कि प्रत्येक फ़ंक्शन घोषणा कैसे दायरे और दृश्यता को प्रभावित करती है।

जावास्क्रिप्ट के एरो फ़ंक्शंस क्या हैं?

जावास्क्रिप्ट का तीर कार्य करता है उन कार्यों को परिभाषित करने का एक वैकल्पिक तरीका है जो डिफ़ॉल्ट का उपयोग नहीं करते हैं समारोह कीवर्ड:

समारोहlogMessage(संदेश) {
सांत्वना देनालॉग (संदेश);
}

कॉन्स्ट लॉग संदेश = (संदेश) => {
सांत्वना देनालॉग (संदेश);
}

कॉन्स्ट लॉग संदेश = संदेश =>सांत्वना देनालॉग (संदेश);

instagram viewer

ऊपर आप एक ही मैसेज को तीन अलग-अलग तरीकों से लिखा हुआ देख सकते हैं। पहला नियमित कार्य घोषणा पद्धति का उपयोग करता है। अगले दो ES6 के एरो फ़ंक्शंस का उपयोग करने के दो तरीके दिखाते हैं।

ECMAScript 2015 मानकों की रिलीज़ के साथ जावास्क्रिप्ट ने सबसे पहले एरो फंक्शन सिंटैक्स को अपनाया। एरो फ़ंक्शंस ने जावास्क्रिप्ट के भीतर कई लंबे समय से चल रहे स्कोप मुद्दों के लिए कार्यों को जल्दी से बनाने और एक दिलचस्प समाधान के लिए एक साफ और संक्षिप्त तरीका प्रदान किया।

इन विशेषताओं ने कई डेवलपर्स के बीच जल्दी से तीर के कार्यों को हिट बना दिया। एक आधुनिक जावास्क्रिप्ट कोडबेस की तलाश करने वाले प्रोग्रामर नियमित कार्यों के रूप में तीर कार्यों को खोजने की संभावना रखते हैं।

जावास्क्रिप्ट में एरो फ़ंक्शंस रेगुलर फ़ंक्शंस से अलग कैसे हैं?

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

दोनों के बीच समानता के बावजूद, कुछ अंतर हैं जिनके बारे में डेवलपर्स को पता होना चाहिए।

दायरे में अंतर

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

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

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

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

समारोहविलंबित संदेश(संदेश, देरी) {

सेटटाइमआउट(समारोह(संदेश) {
सांत्वना देनालॉग (संदेश);
}, देरी);

}

विलंबित संदेश ("हैलो वर्ल्ड", 1000);

समारोह सरल है, स्वीकार कर रहा है संदेश और देरी मिलीसेकंड में। देरी बीत जाने के बाद, इसे संदेश को कंसोल पर लॉग करना चाहिए। हालाँकि, जब कोड निष्पादित किया जाता है, अपरिभाषित पास किए गए संदेश के बजाय कंसोल में लॉग इन किया जाएगा।

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

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

समारोहविलंबित संदेश(संदेश, देरी) {

सेटटाइमआउट(() => {
सांत्वना देनालॉग (संदेश);
}, देरी);

}

विलंबित संदेश ("हैलो वर्ल्ड", 1000);

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

यह इस तथ्य के कारण है कि हर बार विलंबित संदेश उपयोग किया जाता है, यह आंतरिक तीर फ़ंक्शन की अपनी प्रति के साथ अपना दायरा उत्पन्न करता है।

कोड पठनीयता

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

जैसे-जैसे कार्य अधिक जटिल होते जाते हैं, थोड़ी स्पष्टता होने से कोड अधिक पठनीय हो सकता है। वस्तुओं की रचना करते समय, छोटे कार्यों को जोड़ते समय यह कोड को सरल बना सकता है:

कक्षाविरोध करना{
_गिनती = 0;
वृद्धि = () => {
यह._गिनती += 1;
}
ह्रास = () => {
यह._गिनती -= 1;
}
गिनती = () => {
वापस करनायह।_गिनती करना;
}
}

होने देना सीटी = नया विरोध करना();

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में भूमिका

जबकि जावास्क्रिप्ट के तीर कार्य कार्यात्मक प्रोग्रामिंग का एक अभिन्न अंग हैं, उनका भी एक स्थान है ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग. वर्ग घोषणाओं के भीतर तीर कार्यों का उपयोग किया जा सकता है:

कक्षाorderLineItem{
_LineItemID = 0;
_उत्पाद = {};
_मात्रा = 1;

निर्माता(उत्पाद) {
यह._LineItemID = क्रिप्टो.रैंडमयूयूआईडी ();
यह_उत्पाद = उत्पाद
}

चेंजलाइनआइटमक्वांटिटी = (newqty) => {
यह_Qty = newQty;
}
}

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

बिना बुलाए कक्षा घोषणा के बाहर नियमित कार्यों का उपयोग नहीं किया जा सकता है। इसका मतलब यह है कि जबकि अन्य वर्ग घोषणाएं इन कार्यों को प्राप्त कर सकती हैं, अन्य वर्गों की रचना के लिए उन्हें सीधे एक्सेस नहीं किया जा सकता है।

आपको जावास्क्रिप्ट के एरो फ़ंक्शंस का उपयोग कब करना चाहिए?

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

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

जेएस डेवलपर्स को दो सिंटैक्स के बीच के अंतरों के बारे में पता होना चाहिए और ध्यान रखना चाहिए कि उनके कार्यों की घोषणा करते समय कौन सा सिंटैक्स उपयुक्त है।