एरो फ़ंक्शंस उनके लंबे समय से चलने वाले नियमित विकल्प की तुलना में क्लीनर और सरल हैं, लेकिन आपको यह जाने बिना कि वे कैसे काम करते हैं, उनका उपयोग करने में जल्दबाजी नहीं करनी चाहिए।
एरो फंक्शन सिंटैक्स ECMAScript 2015 की रिलीज़ के साथ आया, जिसे ES6 के रूप में भी जाना जाता है। आज, एरो फ़ंक्शंस कई जावास्क्रिप्ट प्रोग्रामर की पसंदीदा विशेषता बन गई है। एरो फ़ंक्शंस के लिए यह प्यार "यह" कीवर्ड के संक्षिप्त सिंटैक्स और सीधे व्यवहार के कारण है।
लेकिन एरो फ़ंक्शंस के कुछ नुकसान हैं। एरो फ़ंक्शंस और नियमित फ़ंक्शंस के बीच महत्वपूर्ण अंतरों के बारे में जानें और जानें कि क्यों, ज्यादातर मामलों में, आप नियमित फ़ंक्शंस से चिपके रहना बेहतर समझते हैं।
1. इसका उपयोग करने से पहले आपको एक एरो फंक्शन को परिभाषित करना होगा
आप तीर फ़ंक्शन को फहरा नहीं सकते। जावास्क्रिप्ट के डिफ़ॉल्ट होस्टिंग नियम आपको किसी फ़ंक्शन को परिभाषित करने से पहले कॉल करने की अनुमति देता है, लेकिन एरो फ़ंक्शंस के मामले में ऐसा नहीं है। यदि आपके पास फ़ंक्शंस वाली एक जावास्क्रिप्ट फ़ाइल है, तो इसका मतलब यह होगा कि सभी महत्वपूर्ण कोड फ़ाइल के निचले भाग में होंगे।
उदाहरण के लिए निम्नलिखित जावास्क्रिप्ट कोड पर विचार करें:
कॉन्स्ट डबलनंबर = (संख्या) {
संख्या मानचित्र (एन => एन * 2)
}कॉन्स्ट आधानंबर = (संख्या) {
संख्या मानचित्र (एन => एन / 2)
}कॉन्स्ट योगसंख्या = (संख्या) {
संख्या कम करें ((योग, एन) => {
वापस करना योग + एन;
}, 0)
}
कॉन्स्ट संख्या = [1, 20, 300, 700, 1500]
कॉन्स्ट दुगुना = दुगना अंक (संख्या)
सांत्वना देनालॉग (आधा संख्या (दोगुनी))
सांत्वना देनालॉग (योगसंख्या (संख्या))
उपरोक्त कोड ब्लॉक में, महत्वपूर्ण कोड सबसे नीचे है। सहायक कार्यों को निष्पादन बिंदु से पहले परिभाषित किया गया है। करने वाले अपने जावास्क्रिप्ट कार्यों का निर्माण करें फ़ाइल के शीर्ष पर असुविधाजनक हो सकता है क्योंकि काम करने वाले वास्तविक कोड को देखने के लिए आपको नीचे स्क्रॉल करना होगा।
यदि आप सहायक कार्यों को नीचे और वास्तविक कोड को शीर्ष पर ले जाते हैं, तो आपको एक संदर्भ त्रुटि मिलेगी। रनटाइम फ़ंक्शन को एक चर के रूप में मानता है। इस प्रकार, आपको इसे एक्सेस करने या लागू करने से पहले इसे पहले परिभाषित करना होगा। लेकिन अगर आपने सभी तीर कार्यों को नियमित कार्यों में परिवर्तित कर दिया है ( समारोह कीवर्ड), तो आपका कोड ठीक काम करेगा। साथ ही, महत्वपूर्ण कोड शीर्ष पर रहता है जहां आप इसे ढूंढ सकते हैं।
यह एरो फ़ंक्शंस का उपयोग करने वाले सबसे बड़े मुद्दों में से एक है। वे कोई होस्टिंग व्यवहार प्रदर्शित नहीं करते हैं। दूसरे शब्दों में, आपको उन्हें उस वास्तविक स्थान से पहले परिभाषित करना होगा जहाँ आप उनका उपयोग करेंगे। दूसरी ओर, आप नियमित कार्यों को फहरा सकते हैं।
2. एरो फ़ंक्शंस कुछ लोगों को भ्रमित कर सकता है
तीर के कार्यों के बजाय नियमित कार्यों का उपयोग करने का एक अन्य कारण पठनीयता है। नियमित कार्यों को पढ़ना आसान होता है क्योंकि वे स्पष्ट रूप से उपयोग करते हैं समारोह कीवर्ड। यह कीवर्ड पहचानता है कि प्रश्न में कोड एक फ़ंक्शन है।
दूसरी ओर, आप वेरिएबल्स को एरो फंक्शन असाइन करते हैं। नौसिखिया के रूप में, यह आपको सोचने में भ्रमित कर सकता है कि कोड फ़ंक्शन के बजाय एक चर है।
नीचे दो कार्यों की तुलना करें:
कॉन्स्ट आधानंबर = (नंबर) => {
वापस करना संख्या मानचित्र (एन => एन / 2)
}
समारोहhalveNumbers(नंबर) {
वापस करना संख्या मानचित्र (एन => एन / 2)
}
पहली नज़र में, आप आसानी से बता सकते हैं कि कोड का दूसरा हिस्सा एक फंक्शन है। सिंटैक्स यह स्पष्ट करता है कि कोड एक फ़ंक्शन है। हालाँकि, पहला अस्पष्ट है - आप आसानी से यह नहीं बता सकते हैं कि यह एक चर या एक फ़ंक्शन है।
3. आप एरो फ़ंक्शंस को विधियों के रूप में उपयोग नहीं कर सकते
जब आप तीर फ़ंक्शन का उपयोग करते हैं, तो यह कीवर्ड उस चीज़ से मेल खाता है जो उस चीज़ के बाहर है जो हम अंदर हैं। ज्यादातर मामलों में, यह विंडो ऑब्जेक्ट है।
निम्नलिखित वस्तु पर विचार करें:
कॉन्स्ट व्यक्ति = {
पहला नाम: "काइल",
उपनाम: "खाना पकाना",
नाम छापें: () => {
सांत्वना देना।लकड़ी का लट्ठा(`${यह।पहला नाम}``${यह।उपनाम}` )
}
}
व्यक्ति.प्रिंटनाम ()
यदि आप कोड चलाते हैं, तो आप देखेंगे कि ब्राउज़र प्रिंट करता है अपरिभाषित प्रथम नाम और अंतिम नाम दोनों के लिए। चूंकि हम एक एरो फंक्शन का उपयोग कर रहे हैं, यह कीवर्ड विंडो ऑब्जेक्ट से मेल खाता है। साथ ही, नहीं है पहला नाम या उपनाम संपत्ति वहाँ परिभाषित।
इस समस्या को हल करने के लिए, आपको इसके बजाय नियमित फ़ंक्शन का उपयोग करने की आवश्यकता है:
कॉन्स्ट व्यक्ति = {
पहला नाम: "काइल",
उपनाम: "खाना पकाना",
नाम छापें: समारोह() {
सांत्वना देना।लकड़ी का लट्ठा(`${यह।पहला नाम}``${यह।उपनाम}` )
}
}
व्यक्ति.प्रिंटनाम ()
यह ठीक काम करेगा क्योंकि यह यह आपकी जानकारी के लिए है व्यक्ति वस्तु। यदि आप इस प्रकार की वस्तु-उन्मुख प्रोग्रामिंग करने जा रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता होगी कि आप नियमित कार्यों का उपयोग कर रहे हैं। एरो फंक्शन काम नहीं करेगा।
एरो फ़ंक्शंस का उपयोग कब करें
मुख्य रूप से उन जगहों पर एरो फ़ंक्शंस का उपयोग करें जहाँ आपको एक अनाम फ़ंक्शन की आवश्यकता है। ऐसे परिदृश्य का एक उदाहरण कॉलबैक फ़ंक्शन से निपट रहा है। कॉलबैक लिखते समय तीर फ़ंक्शन का उपयोग करना बेहतर होता है क्योंकि सिंटैक्स पूर्ण फ़ंक्शन लिखने से कहीं अधिक सरल होता है।
इन दोनों की तुलना करें और तय करें कि कौन सा अधिक सीधा है:
समारोहhalveNumbers(नंबर) {
वापस करना संख्या मानचित्र (एन => एन / 2)
}
समारोहhalveNumbers(नंबर) {
वापस करना संख्या मानचित्र (समारोह(एन) {
वापस करना एन / 2
})
}
दोनों मामले कॉलबैक फ़ंक्शन को मानचित्र () विधि में पास करते हैं। लेकिन पहला कॉलबैक एरो फंक्शन है जबकि दूसरा फुल फंक्शन है। आप देख सकते हैं कि कैसे पहला फ़ंक्शन दूसरे फ़ंक्शन की तुलना में कोड की कम पंक्तियाँ लेता है: तीन बनाम तीन। पाँच।
एरो फ़ंक्शंस का उपयोग करने का दूसरा समय है जब भी आप किसी विशेष "इस" सिंटैक्स से निपटना चाहते हैं। यदि आप नियमित कार्यों का उपयोग कर रहे हैं या विशेष चीजों के लिए तीर कार्यों का उपयोग कर रहे हैं तो "यह" ऑब्जेक्ट बदल जाएगा।
निम्न कोड ब्लॉक दस्तावेज़ ऑब्जेक्ट पर दो "क्लिक" ईवेंट श्रोताओं को पंजीकृत करता है। पहला उदाहरण कॉलबैक के रूप में नियमित फ़ंक्शन का उपयोग करता है, जबकि दूसरा तीर फ़ंक्शन का उपयोग करता है। दोनों कॉलबैक के अंदर, कोड निष्पादन ऑब्जेक्ट (यह) और ईवेंट लक्ष्य को लॉग करता है:
दस्तावेज़ऐडइवेंट लिस्टनर ("क्लिक करें", समारोह(इ) {
सांत्वना देना।लकड़ी का लट्ठा("समारोह", यह, ई. लक्ष्य)
})
दस्तावेज़ऐडइवेंट लिस्टनर ("क्लिक करें", (ई) => {
सांत्वना देना।लकड़ी का लट्ठा("तीर", यह, ई. लक्ष्य)
})
यदि आप इस स्क्रिप्ट को चलाते हैं, तो आप देखेंगे कि "यह" संदर्भ दोनों के लिए अलग है। नियमित कार्य के लिए, यह गुण दस्तावेज़ को संदर्भित करता है, जो समान है e.target संपत्ति। लेकिन एरो फ़ंक्शन के लिए, यह विंडो ऑब्जेक्ट को संदर्भित करता है।
जब आप कॉलबैक के रूप में एक नियमित फ़ंक्शन का उपयोग करते हैं, तो यह उस तत्व को संदर्भित करेगा जहां हम ईवेंट को ट्रिगर करते हैं। लेकिन जब आप एरो फंक्शन का उपयोग करते हैं, तो यह कीवर्ड विंडो ऑब्जेक्ट को डिफॉल्ट करता है।
एरो फ़ंक्शंस बनाम रेगुलर फ़ंक्शंस के बारे में अधिक जानें
नियमित कार्यों और तीर कार्यों के बीच कई अन्य सूक्ष्म अंतर हैं। दोनों प्रकार के कार्यों में महारत हासिल करना जावास्क्रिप्ट में महारत हासिल करने के लिए मूलभूत है। जानें कि कब एक का उपयोग करना है और कब दूसरे का उपयोग करना है; तब आप अपने जावास्क्रिप्ट में एक नियमित फ़ंक्शन या एक तीर फ़ंक्शन का उपयोग करने के प्रभाव को समझेंगे।