2016-04-07 18 views
1

Also habe ich gelesen, dass ECMAScript6 (ES6) TCO ist. (grobes Beispiel ohne praktischen Zweck ...)Nutzen rekursive Methoden in ES6-Klassen TCO (Tail Call Optimization)?

const tcoFn = (acc) => { 
    if (acc > 10) { 
    return acc 
    } else { 
    return tcoFn(acc + 1) 
    } 
} 

Meine Frage ist, ob es bekannt ist, dass wir TCO in einer ES6 Klasse bekommen: Ich habe dies als bewiesen gesehen? So

class TCOish { 
    tcoMethod(acc) { 
    if (acc > 10) { 
     return acc 
    } else { 
     return tcoMethod(acc + 1) 
    } 
    } 
} // End class definition 

Nach einiger Suche auf der Interwebs bleibt dies mir unklar, und ich frage mich, ob es eine endgültige Antwort ist, dass jemand mich zeigen kann?

Auch erwähnenswert ist, dass dies in der Node-App verwendet wird, wo uns der Browser oder das Transpiling egal ist.

Vielen Dank.

+1

Es ist nicht in Knoten implementiert – Amit

+3

https://kangax.github.io/compat-table/es6/ – Andy

+0

Testen für diese Optimierung ist einfach. Führen Sie einfach Ihre Funktion mit einer immensen Menge an Rekursion aus, und wenn Sie einen Fehler "zu viel Rekursion" erhalten, ist dies nicht der Fall. –

Antwort

0

Also, von der link, die Andy in den Kommentaren zur Verfügung gestellt, sieht es aus wie die Antwort ist noch nicht. Dies scheint allgemein zu gelten, mit Ausnahme von WebKit, das in der TCO-Arena ein bisschen voraus ist. Bemerkenswert ist, dass der Wert dieser "Antwort" mit der Zeit abnehmen wird, wenn die TCO-Unterstützung wächst.

Verwandte Themen