एरो फ़ंक्शंस अधिक कॉम्पैक्ट हैं, लेकिन क्या आप जानते हैं कि वे अन्य अंतरों की एक पूरी मेजबानी करते हैं?
फ़ंक्शंस जावास्क्रिप्ट का एक अनिवार्य हिस्सा है जिसे आपको पुन: प्रयोज्य कोड लिखने के लिए उपयोग करने की आवश्यकता होती है। दो मुख्य प्रकार के कार्य नियमित और तीर कार्य हैं, और उन्हें परिभाषित करने के कई तरीके हैं।
भले ही वे समान जरूरतों को पूरा करते हैं, उनके पास कुछ महत्वपूर्ण अंतर हैं जो मूल रूप से प्रभावित कर सकते हैं कि आप उन्हें अपने कोड में कैसे उपयोग करते हैं। ऐरो फ़ंक्शंस और नियमित फ़ंक्शंस के बीच कई अंतरों के बारे में जानें।
1. सिंटेक्स अंतर
जावास्क्रिप्ट फ़ंक्शंस विकसित करते समय आपके द्वारा चुने गए सिंटैक्स का आपके कोड को पढ़ने और समझने में कितना आसान है, इस पर बड़ा प्रभाव पड़ता है। रेगुलर और एरो फ़ंक्शंस का सिंटैक्स महत्वपूर्ण रूप से भिन्न होता है, जो आपके लिखने और उपयोग करने के तरीके को प्रभावित करता है।
जावास्क्रिप्ट तीर कार्य करता है एक छोटी भाषा संरचना का उपयोग करें जो अधिक समझने योग्य हो। आप उन्हें एक अभिव्यक्ति या कथन में जोड़कर फ़ंक्शन बनाने के लिए उनका उपयोग कर सकते हैं।
कॉन्स्ट जोड़ें = (ए, बी) => ए + बी;
इस उदाहरण में, जोड़ना फ़ंक्शन दो इनपुट स्वीकार करता है, ए और बी, और उनका कुल रिटर्न देता है। => साइन इसे एक एरो फंक्शन के रूप में परिभाषित करता है।
दूसरी ओर, एक नियमित कार्य को परिभाषित करने के लिए उपयोग की आवश्यकता होती है समारोह कीवर्ड, अधिक वर्बोज़ सिंटैक्स के साथ, जैसा कि इस उदाहरण में दिखाया गया है:
समारोहजोड़ना(ए, बी) {
वापस करना ए + बी;
}
इस उदाहरण में, समारोह कीवर्ड एक नियमित फ़ंक्शन को परिभाषित करता है जो घुंघराले ब्रेसिज़ का भी उपयोग करता है और वापस करना कथन।
कई कथनों या अभिव्यक्तियों की आवश्यकता वाले जटिल सिंटैक्स के लिए नियमित कार्य अधिक उपयोगी होते हैं। इसके विपरीत, एरो फ़ंक्शंस अधिक संक्षिप्त सिंटैक्स का उपयोग करते हैं जो आपके कोड को पढ़ने और समझने में आसान बना सकता है।
2. स्कोपिंग अंतर
"स्कोपिंग" शब्द वर्णन करता है कि किसी फ़ंक्शन के आंतरिक चर और फ़ंक्शन कैसे पहुंच योग्य हैं। जावास्क्रिप्ट में, आप स्कोपिंग का उपयोग करके अपने पूरे कोड में चर और कार्यों को परिभाषित और एक्सेस करते हैं। उनका विशिष्ट स्कोपिंग आपके द्वारा JavaScript लिखने और उपयोग करने के तरीके को महत्वपूर्ण रूप से प्रभावित कर सकता है तीर और नियमित कार्य।
स्कोपिंग में, एरो कैसे काम करता है यह सामान्य कार्य करने के तरीके से कीवर्ड काफी भिन्न होता है। नियमित कार्य परिभाषित करते हैं यह खोजशब्द स्वयं; इसलिए, यह उस संदर्भ के आधार पर बदल सकता है जिसमें आप फ़ंक्शन का आह्वान करते हैं।
दूसरी ओर, क्योंकि वे निर्दिष्ट नहीं करते हैं यह कीवर्ड, एरो फ़ंक्शंस उसी का उपयोग करते हैं यह उनके आसपास के स्थिर दायरे के रूप में।
अंतर देखने के लिए, निम्न उदाहरण देखें। मान लें कि आपके पास ए व्यक्ति ए के साथ वस्तु नाम संपत्ति और एक विधि कहा जाता है कहो नाम () जो नियमित फ़ंक्शन का उपयोग करके व्यक्ति का नाम लॉग करता है:
कॉन्स्ट व्यक्ति = {
नाम: 'जॉन,'कहो नाम: समारोह() {
सांत्वना देना।लकड़ी का लट्ठा(यह।नाम);
}
};
व्यक्ति। नाम (); // लॉग 'जॉन'
यहाँ, नियमित SayName () फ़ंक्शन व्यक्ति वस्तु का एक तरीका है और यह उस फ़ंक्शन के अंदर का कीवर्ड उस व्यक्ति वस्तु को संदर्भित करता है।
आइए अब एरो फंक्शन के साथ एक ही चीज़ का प्रयास करें:
कॉन्स्ट व्यक्ति = {
नाम: 'जॉन',कहो नाम: () => {
सांत्वना देना।लकड़ी का लट्ठा(यह।नाम);
}
};
व्यक्ति। नाम (); // लॉग अपरिभाषित
क्योंकि एरो फंक्शन में इस्तेमाल किया जाता है कहो नाम () विधि स्वयं को परिभाषित नहीं करती है यह कीवर्ड, यह का उपयोग करता है यह इसके चारों ओर स्थिर दायरे का। इस मामले में, यह उदाहरण का वैश्विक दायरा है।
नतीजतन, जब आप कॉल करते हैं व्यक्ति। नाम (), आपको मिला अपरिभाषित इसके बजाय "जॉन।" यह महत्वपूर्ण रूप से प्रभावित कर सकता है कि आप अपने कोड में फ़ंक्शन कैसे लिखते और उपयोग करते हैं।
3. मामलों और सर्वोत्तम प्रथाओं का प्रयोग करें
नियमित कार्य उन कार्यों के लिए बेहतर अनुकूल होते हैं जिनके लिए स्वयं की आवश्यकता होती है यह कीवर्ड, जैसे किसी ऑब्जेक्ट में तरीके।
एरो फ़ंक्शंस के लिए बेहतर अनुकूल हैं कार्यात्मक प्रोग्रामिंग और कॉलबैक जिनकी आवश्यकता नहीं है यह कीवर्ड।
4. फंक्शन बाइंडिंग अंतर
फंक्शन बाइंडिंग वह शब्द है जिसका उपयोग बीच के संबंध का वर्णन करने के लिए किया जाता है यह आपके कोड में कीवर्ड और फ़ंक्शंस। ऐरो फ़ंक्शंस और सामान्य फ़ंक्शंस के बीच फ़ंक्शन बाइंडिंग में विविधताएं आपके द्वारा एरो फ़ंक्शंस का निर्माण और उपयोग करने के तरीके को दृढ़ता से प्रभावित कर सकती हैं।
का उपयोग यह कीवर्ड इसे नियमित कार्यों में अद्वितीय बनाता है और फ़ंक्शन को कॉल करने के लिए उपयोग की जाने वाली विधि के आधार पर विभिन्न वस्तुओं के साथ संबद्ध करता है। फंक्शन बाइंडिंग रेगुलर और एरो फ़ंक्शंस के बीच सबसे महत्वपूर्ण अंतरों में से एक है।
इसके विपरीत, तीर के कार्य नहीं होते हैं यह कीवर्ड; बल्कि, वे इसे आसपास के दायरे से प्राप्त करते हैं।
आइए इस अंतर को और अधिक समझने के लिए एक उदाहरण देखें। मान लें कि आपके पास ए व्यक्ति ए के साथ वस्तु नाम फ़ील्ड और एक विधि कहा जाता है कहो नाम () जो व्यक्ति का नाम रिकॉर्ड करने के लिए एक नियमित कार्य का उपयोग करता है:
कॉन्स्ट व्यक्ति = {
नाम: 'जॉन',कहो नाम: समारोह() {
सांत्वना देना।लकड़ी का लट्ठा(यह।नाम);
}
};कॉन्स्ट दूसरा व्यक्ति = {
नाम: 'जेन'
};
person.sayName.call (अन्य व्यक्ति); // लॉग 'जेन'
इस उदाहरण में, आप व्यक्ति वस्तु कहते हैं कहो नाम () मूल्य के साथ विधि एक अन्य व्यक्ति का उपयोग पुकारना() तरीका। इस वजह से, द कहो नाम () तरीका, यह, कीवर्ड के लिए बाध्य है एक अन्य व्यक्ति ऑब्जेक्ट, और यह लॉग करता है "जेन" इसके बजाय "जॉन."
आइए अब एक ही चीज़ को एरो फंक्शन के साथ उपयोग करें:
कॉन्स्ट व्यक्ति = {
नाम: 'जॉन',कहो नाम: () => {
सांत्वना देना।लकड़ी का लट्ठा(यह।नाम);
}
};कॉन्स्ट दूसरा व्यक्ति = {
नाम: 'जेन'
};
person.sayName.call (अन्य व्यक्ति); // लॉग अपरिभाषित
के बाद से कहो नाम () तकनीक का अपना कीवर्ड नहीं है, आप इस उदाहरण में इसके भीतर एक ऐरो फ़ंक्शन का उपयोग कर रहे हैं। इस मामले में, एरो फ़ंक्शन आसपास के दायरे के गुणों को प्राप्त करता है, जो कि वैश्विक दायरा है।
इसका मतलब है कि जब आप दौड़ते हैं person.sayName.call (अन्य व्यक्ति), तीर समारोह यह कीवर्ड वैश्विक वस्तु बनी हुई है, और अपरिभाषित की जगह लेता है जेन लॉग में।
यदि आपको किसी फ़ंक्शन को किसी विशिष्ट से बाइंड करने की आवश्यकता है यह मूल्य, एक साधारण कार्य बेहतर हो सकता है। हालाँकि, यदि आपको किसी फ़ंक्शन को किसी विशिष्ट से बाँधने की आवश्यकता नहीं है यह मूल्य, एक तीर फ़ंक्शन छोटा और समझने में आसान हो सकता है।
5. निहित वापसी
एरो फ़ंक्शन में एक अंतर्निहित वापसी सुविधा होती है। यदि फ़ंक्शन बॉडी में एक एकल अभिव्यक्ति होती है, तो फ़ंक्शन उस अभिव्यक्ति को लौटाता है।
उदहारण के लिए:
कॉन्स्ट डबल = (एक्स) => एक्स * 2;
यह ऐरो फ़ंक्शन किसी पैरामीटर से दोहरा रिटर्न देता है। आपको एक स्पष्ट का उपयोग करने की आवश्यकता नहीं है वापस करना कीवर्ड क्योंकि फ़ंक्शन बॉडी में केवल एक अभिव्यक्ति होती है।
6. संगतता अंतर
संगतता अंतर ECMAScript 6 जोड़े गए एरो फ़ंक्शंस को संदर्भित करता है, जो पुराने ब्राउज़रों या परिवेशों के साथ काम नहीं कर सकता है। दूसरी ओर, जावास्क्रिप्ट की शुरुआत के बाद से नियमित कार्य आसपास रहे हैं और व्यापक रूप से समर्थित हैं।
यहां एक ऐरो फ़ंक्शन का उदाहरण दिया गया है जो अधिक स्थापित स्थितियों में काम नहीं कर सकता है:
कॉन्स्ट जोड़ें = (ए, बी) => ए + बी;
निम्नलिखित एक तुलनीय नियमित कार्य है जिसे अधिकांश स्थितियों में काम करना चाहिए:
समारोहजोड़ना(ए, बी) {
वापस करना ए + बी;
}
अनुकूलता सुनिश्चित करने के लिए पुराने परिवेशों को लक्षित करते समय ऐरो फ़ंक्शंस के बजाय नियमित फ़ंक्शंस का उपयोग करें। हालांकि, एरो फ़ंक्शंस एक सिंटैक्स प्रदान कर सकते हैं जो समझने में आसान है और आधुनिक ब्राउज़रों और वातावरणों के साथ काम करते समय अधिक सघन है।
जावास्क्रिप्ट में एरो फ़ंक्शंस और रेगुलर फ़ंक्शंस के बीच चयन करना
जावास्क्रिप्ट में, तीर और नियमित कार्यों में अलग-अलग विशेषताएं और अनुप्रयोग होते हैं। एरो फ़ंक्शंस में एक साधारण सिंटैक्स होता है, इनहेरिट करना यह कीवर्ड शब्द उनके उपयोग के संदर्भ में जबकि नियमित कार्य अधिक अनुकूलनीय होते हैं और अधिक जटिल स्थितियों से निपट सकते हैं।
यह जानना महत्वपूर्ण है कि वे कैसे भिन्न हैं और अपने कोड की आवश्यकताओं के अनुसार उनका उपयोग कैसे करें। उपयोग करने के लिए किस प्रकार के फ़ंक्शन का चयन करते समय, आपको संगतता अंतरों पर भी विचार करना चाहिए।
अंततः, जावास्क्रिप्ट का तीर और नियमित कार्य शक्तिशाली उपकरण हैं जो आपको क्लीनर और अधिक कुशल कोड लिखने में मदद करते हैं।