रेगुलर फंक्शन्स बनाम एरो फंक्शन्स
एक एरो फंक्शन कोड को संक्षिप्त रूप से लिखने के लिए उपयोग किया जाता है। दोनों फंक्शन्स रेगुलर और एरो समान तरीके से काम करते हैं लेकिन उनके बीच कुछ अंतर हैं। आइए उन अंतरों को संक्षेप में समझते हैं।
एरो फंक्शन का सिंटैक्स
let x = (params) => { // code };
रेगुलर फंक्शन का सिंटैक्स
let x = function functionname(params){ // code };
"this" कीवर्ड का उपयोग
एरो फंक्शन्स में "this" कीवर्ड का उपयोग करने में असमर्थ हैं जबकि रेगुलर फंक्शन्स में इसे बिना किसी परेशानी के उपयोग किया जा सकता है।
उदाहरण
निम्नलिखित उदाहरण में, दोनों रेगुलर (rectangle) और एरो (square) फंक्शन्स का उपयोग ऑब्जेक्ट "num" के अंदर किया गया है, जिसमें len (लंबाई) और bre (चौड़ाई) प्रॉपर्टीज हैं। हमारा उद्देश्य स्क्वायर का क्षेत्रफल (len*len) एरो फंक्शन का उपयोग करके और रेक्टेंगल का क्षेत्रफल (len*bre) रेगुलर फंक्शन का उपयोग करके खोजना है। लेकिन चूंकि "this" कीवर्ड एरो फंक्शन में काम नहीं करता, स्क्वायर का क्षेत्रफल मान "NaN" के रूप में लौटाया जाता है जबकि रेगुलर फंक्शन का उपयोग करके हमें रेक्टेंगल का सटीक क्षेत्रफल मिला जैसा कि आउटपुट में दिखाया गया है।
<html> <body> <script> var num = { len: 12, bre: 13, square:() => { document.write(this.len * this.len); }, rectangle(){ document.write(this.len * this.bre); } }; num.square(); document.write("</br>"); num.rectangle(); </script> </body> </html>
आउटपुट
NaN 156
'new' कीवर्ड का उपयोग
एरो फंक्शन्स "कंस्ट्रक्टिबल" नहीं हैं लेकिन "कॉलेबल" हैं इसलिए कीवर्ड "new" यहां काम नहीं करता जबकि रेगुलर फंक्शन्स दोनों "कॉलेबल" और "कंस्ट्रक्टिबल" हैं इसलिए "new" कीवर्ड यहां काम करता है।
उदाहरण
निम्नलिखित उदाहरण में, "new" कीवर्ड का उपयोग करके कुछ आर्गुमेंट्स दोनों रेगुलर और एरो फंक्शन को पास किए गए हैं। लेकिन चूंकि एरो फंक्शन "कंस्ट्रक्टिबल" नहीं है, हमें एक त्रुटि मिलेगी जबकि हमें रेगुलर फंक्शन्स के लिए वैध आउटपुट मिलेगा।
<html> <body> <script> var word = function(){ document.write(JSON.stringify(arguments)); /// executes '{"0":"Tutorix","1":"Tutorialspoint"}' as output }; new word("Tutorix","Tutorialspoint"); var newword = ()=> { document.write(JSON.stringify(arguments)); //executes 'newword is not a constructor' as output }; new newword("Tutorix","Tutorialspoint"); </script> </body> </html>