javascript - जावास्क्रिप्ट में "फ़ंक्शन *" क्या है?




2 Answers

यह EcmaScript.next लिए एक प्रस्तावित वाक्यविन्यास है।

मोज़िला के डेव हरमन ने EcmaScript.next बारे में एक बात की। 30:15 वह जेनरेटर के बारे में बात करता है।

इससे पहले, वह बताते हैं कि मोज़िला समिति को चलाने में मदद के लिए प्रस्तावित भाषा परिवर्तनों का प्रयोगात्मक रूप से कार्यान्वयन कैसे कर रहा है। डेव ब्रेंडन ईच, मोज़िला के सीटीओ (मुझे लगता है), और मूल जावास्क्रिप्ट डिजाइनर के साथ मिलकर काम करता है।

आप एक्मास्क्रिप्ट वर्किंग ग्रुप विकी पर अधिक जानकारी प्राप्त कर सकते हैं: http://wiki.ecmascript.org/doku.php?id=harmony:generators : जनरेटर

कार्यकारी समूह (टीसी -39) में सामान्य समझौता है कि EcmaScript.next में किसी प्रकार का जेनरेटर इटरेटर प्रस्ताव होना चाहिए, लेकिन यह अंतिम नहीं है।

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

अवलोकन

प्रथम श्रेणी के कोरआउट, निलंबित निष्पादन संदर्भों (यानी, कार्य सक्रियण) encapsulating वस्तुओं के रूप में प्रतिनिधित्व किया। पहले कला: पायथन, आइकन, लुआ, योजना, स्मॉलटॉक।

उदाहरण

फाइबोनैकी संख्याओं का "अनंत" अनुक्रम (2 53 के आसपास व्यवहार के बावजूद):

function* fibonacci() {
    let [prev, curr] = [0, 1];
    for (;;) {
        [prev, curr] = [curr, prev + curr];
        yield curr;
    }
}

लूप्स में जेनरेटर को फिर से चालू किया जा सकता है:

for (n of fibonacci()) {
    // truncate the sequence at 1000
    if (n > 1000)
        break;
    print(n);
}

जनरेटर इटरेटर हैं:

let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8

this पृष्ठ में मुझे एक नया जावास्क्रिप्ट फ़ंक्शन प्रकार मिला:

// NOTE: "function*" is not supported yet in Firefox.
// Remove the asterisk in order for this code to work in Firefox 13 

function* fibonacci() { // !!! this is the interesting line !!!
    let [prev, curr] = [0, 1];
    for (;;) {
        [prev, curr] = [curr, prev + curr];
        yield curr;
    }
}

मुझे पहले से ही पता है कि yield , let और [?,?]=[?,?] करते हैं , लेकिन यह नहीं पता कि function* क्या है। यह क्या है?

पीएस Google की कोशिश करने से परेशान नहीं है, तारों के साथ अभिव्यक्तियों की खोज impossible है ( वे प्लेसहोल्डर्स के रूप में उपयोग किए जाते हैं )।




function* प्रकार ऐसा लगता है कि यह उन प्रक्रियाओं के लिए जनरेटर फ़ंक्शन के रूप में कार्य करता है जिन्हें पुनरावृत्त किया जा सकता है। सी # में "उपज रिटर्न" का उपयोग करके इस तरह की सुविधा है 1 देखें और 2 देखें

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




Related