JavaScript支持的最大遞歸調(diào)用次數(shù)分析
你對(duì)JavaScript引擎能進(jìn)行多少次遞歸調(diào)用好奇嗎?
多少次遞歸調(diào)用
下面的函數(shù)可以讓你找到答案: (靈感來自Ben Alman的 gist)
function computeMaxCallStackSize() {
try {
return 1 + computeMaxCallStackSize();
} catch (e) {
// Call stack overflow
return 1;
}
}
三個(gè)結(jié)果:
Node.js: 11034
Firefox: 50994
Chrome: 10402
這些數(shù)字代表什么?Aleph先生指出,在V8中,遞歸調(diào)用的數(shù)量取決于兩個(gè)量:堆棧的大小和堆棧幀(保存參數(shù)的局部變量)的大小。你可以通過在 computeMaxCallStackSize() 添加局部變量進(jìn)行驗(yàn)證 - 它會(huì)返回低位值。
在ECMAScript 6中的尾部調(diào)用(Tail call)優(yōu)化
ES6 有尾部調(diào)用優(yōu)化 :如果一個(gè)函數(shù)中的最后一步也是一個(gè)函數(shù)調(diào)用,它會(huì)被“跳”過,而不是通過子函數(shù)調(diào)用。這就意味著在ES6(嚴(yán)格模式)下,你只要稍微改一下computeMaxCallStackSize函數(shù),它就可以永遠(yuǎn)執(zhí)行下去。
function computeMaxCallStackSize(size) {
size = size || 1;
return computeMaxCallStackSize(size + 1);
}
- 詳解Javascript函數(shù)聲明與遞歸調(diào)用
- js匿名函數(shù)作為函數(shù)參數(shù)詳解
- Javascript自執(zhí)行匿名函數(shù)(function() { })()的原理淺析
- 淺析Javascript匿名函數(shù)與自執(zhí)行函數(shù)
- Javascript中匿名函數(shù)的調(diào)用與寫法實(shí)例詳解(多種)
- Javascript中的匿名函數(shù)與封裝介紹
- js中匿名函數(shù)的創(chuàng)建與調(diào)用方法分析
- 詳談JavaScript 匿名函數(shù)及閉包
- JS遍歷數(shù)組和對(duì)象的區(qū)別及遞歸遍歷對(duì)象、數(shù)組、屬性的方法詳解
- JavaScript采用遞歸算法計(jì)算階乘實(shí)例
- JavaScript中匿名函數(shù)的遞歸調(diào)用
相關(guān)文章
淺談TypeScript 用 Webpack/ts-node 運(yùn)行的配置記錄
這篇文章主要介紹了淺談TypeScript 用 Webpack/ts-node 運(yùn)行的配置記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10JS實(shí)現(xiàn)簡單控制視頻播放倍速的實(shí)例代碼
這篇文章主要介紹了通過JS來實(shí)現(xiàn)簡單控制視頻播放倍速,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04通過javascript的匿名函數(shù)來分析幾段簡單有趣的代碼
想起自己很久以前學(xué)習(xí)javascript的經(jīng)歷,也曾經(jīng)碰到過幾個(gè)由匿名函數(shù)造成的困擾(其中一個(gè)就是由閉包引起的),下面就整理幾段簡單代碼討論一下,讓我們大家一起進(jìn)步。2010-06-06javascript 裝載iframe子頁面,自適應(yīng)高度
2009-03-03javascript實(shí)現(xiàn)自動(dòng)填寫表單實(shí)例簡析
這篇文章主要介紹了javascript實(shí)現(xiàn)自動(dòng)填寫表單的方法,以一個(gè)簡單實(shí)例形式分析了JavaScript結(jié)合瀏覽器設(shè)置實(shí)現(xiàn)自動(dòng)保存表單的相關(guān)技巧,需要的朋友可以參考下2015-12-12JS常用的幾種數(shù)組遍歷方式以及性能分析對(duì)比實(shí)例詳解
這篇文章主要介紹了JS常用的幾種數(shù)組遍歷方式以及性能分析對(duì)比,結(jié)合實(shí)例形式詳細(xì)分析了javascript針對(duì)數(shù)組遍歷的幾種常見使用方法及執(zhí)行效率對(duì)比,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2018-04-04