Analisis bilangan maksimum panggilan rekursif yang disokong oleh kemahiran JavaScript_javascript

WBOY
Lepaskan: 2016-05-16 16:43:11
asal
1898 orang telah melayarinya

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)

Salin kod Kod adalah seperti berikut:

function computeMaxCallStackSize() {
Cuba {
            pulangkan 1 computeMaxCallStackSize();
} tangkap (e) {
// Limpahan timbunan panggilan
Pulangan 1;
}
}

Tiga keputusan:

Salin kod Kod adalah seperti berikut:

Node.js: 11034
Firefox: 50994
Chrome: 10402

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.

Salin kod Kod adalah seperti berikut:

function computeMaxCallStackSize(saiz) {
saiz = saiz || 1;
Kembalikan computeMaxCallStackSize(saiz 1);
}

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!