Adakah anda ingin tahu tentang berapa banyak panggilan rekursif yang boleh dibuat oleh enjin JavaScript?
Berapa banyak panggilan rekursif
Fungsi berikut akan membolehkan anda mencari jawapannya: (Diinspirasikan oleh intipati Ben Alman)
Tiga keputusan:
Apakah yang diwakili oleh nombor ini? En. Aleph menegaskan bahawa dalam V8, bilangan panggilan rekursif bergantung pada dua kuantiti: saiz tindanan dan saiz bingkai tindanan (pembolehubah tempatan yang memegang parameter). Anda boleh mengesahkan ini dengan menambah pembolehubah tempatan dalam computeMaxCallStackSize() - ia akan mengembalikan nilai yang rendah.
Pengoptimuman panggilan ekor dalam ECMAScript 6
ES6 mempunyai pengoptimuman panggilan ekor: jika langkah terakhir dalam fungsi juga merupakan panggilan fungsi, ia akan "dilangkau" dan bukannya dipanggil melalui subfungsi. Ini bermakna di bawah ES6 (mod ketat), anda hanya perlu menukar sedikit fungsi computeMaxCallStackSize dan ia boleh dilaksanakan selama-lamanya.