[javascript] क्या मैं जेनरेटर के साथ ES6 के तीर फ़ंक्शन सिंटैक्स का उपयोग कर सकता हूं? (तीर नोटेशन)



Answers

इनलाइन-फ़ंक्शंस और तीर-फ़ंक्शंस के बीच का अंतर

सबसे पहले Arrow-functions () => {} इनलाइन-फ़ंक्शन function(){} को प्रतिस्थापित करने के लिए नहीं बनाए गए हैं और वे अलग हैं। इनलाइन-फ़ंक्शंस केवल कार्य हैं, इसलिए सवाल यह है कि तीर-फ़ंक्शंस और इनलाइन-फ़ंक्शंस के बीच का अंतर क्या है।

एक तीर फ़ंक्शन अभिव्यक्ति (जिसे तीर फ़ंक्शन के रूप में भी जाना जाता है) में फ़ंक्शन एक्सप्रेशन की तुलना में एक छोटा वाक्यविन्यास होता है और यह स्वयं, arguments , super , या new.target बाध्य नहीं करता है)। तीर कार्य हमेशा अज्ञात होते हैं।

यहां कुछ और त्वरित विवरण

जेनरेटर के रूप में तीर-फ़ंक्शन का उपयोग क्यों नहीं किया जा सकता है

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions

उपज कीवर्ड का उपयोग करें

yield कीवर्ड का उपयोग तीर फ़ंक्शन के शरीर में नहीं किया जा सकता है (सिवाय इसके कि फ़ंक्शंस के भीतर अनुमति के दौरान अनुमति दी जाती है)। नतीजतन, तीर कार्यों का उपयोग जेनरेटर के रूप में नहीं किया जा सकता है।

ध्यान दें कि yield बिना MDN समझ में नहीं आता है।

क्यों एरो-फ़ंक्शन उपज का उपयोग नहीं कर सकता है

http://tc39wiki.calculist.org/es6/arrow-functions/

तीर फ़ंक्शंस this झुकाव से बांधते return , ब्लॉक बॉडी केस में return करते return , इसलिए यह तत्काल संलग्न तीर फ़ंक्शन से वापस आता है, और break रोकता है और तत्काल संलग्न तीर फ़ंक्शन के बाहर संदर्भ संदर्भों से continue है।

पहचानकर्ता प्राथमिक अभिव्यक्ति arguments उपयोग तीर फ़ंक्शन के शरीर (चाहे अभिव्यक्ति या ब्लॉक फ़ॉर्म) में नहीं किया जा सकता है।

इसी तरह, yield उपयोग तीर फ़ंक्शन के शरीर में नहीं किया जा सकता है। तीर जेनरेटर नहीं हो सकते हैं और हम गहरी निरंतरता नहीं चाहते हैं।

एक तीर-समारोह में पैदावार अर्थपूर्ण त्रुटि फेंक देगा: http://www.ecma-international.org/

अंत में ईसीएमए 6 के कार्यान्वयन में गहरी जटिलता का कारण है। सी # कुछ हद तक इसी तरह के reasons लिए भी इसकी अनुमति नहीं देता reasons

Question

यानी मैं इसे कैसे व्यक्त करूं:

function *(next) {}

तीरों के साथ। मैंने उन सभी संयोजनों का प्रयास किया है जिनके बारे में मैं सोच सकता हूं, और मुझे इस पर कोई दस्तावेज नहीं मिल रहा है।

(वर्तमान में नोड v0.11.14 का उपयोग कर)




मुझे पता है कि यह बहुत देर हो चुकी है, लेकिन एक और संभावित कारण वाक्यविन्यास हो सकता है। शायद (*() => {}) काम करता है, लेकिन इसके बारे में क्या (9 ** () => {}) ? क्या वह 9 तीर फ़ंक्शन की शक्ति के लिए है, NaN लौट रहा है, या यह जनरेटर तीर फ़ंक्शन 9 गुणा है, NaN भी वापस कर रहा है? यह कुछ वैकल्पिक वाक्यविन्यास के साथ किया जा सकता है, जैसे कि =>* जैसा कि यहां किसी अन्य उत्तर द्वारा उल्लिखित है, लेकिन हो सकता है कि जेनरेटर फ़ंक्शन सिंटैक्स (उदा। function* () {} और { *genMethod() {} } की स्थिरता को संरक्षित रखने की इच्छा हो। { *genMethod() {} } ) जब इसे कार्यान्वित किया जा रहा था। बहाना का बहुत अधिक नहीं, बल्कि इसके लिए एक कारण है।




Related