js遞歸錯誤
錯誤信息:Uncaught RangeError: Maximum call stack size exceeded
問題代碼:
js代碼:
$(function(){
selectToggle();
});
//自動加載菜單欄
function selectToggle(){
$(".m-menu__toggle").click();
}
html代碼:
<a href="#" class="m-menu__link m-menu__toggle" onclick="selectToggle()">
<i class="m-menu__link-icon flaticon-share"></i>
<span class="m-menu__link-text">
{{module.moduleName}}
</span>
<i class="m-menu__ver-arrow la la-angle-right"></i>
</a>
錯誤原因:
錯誤根據中文翻譯,意思為:最大堆棧超過了最大值。
反復循環調用導致最大堆棧超過最大值
每個瀏覽器都不一樣,例如常用的Chrome和FireFox
- Firefox: 50994
- Chrome: 10402
解決辦法:仔細審查代碼,出現這種情況是因為函數不合理的循環調用導致的。
另外科普下什麽是遞歸(引用百度百科):
程序調用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。遞歸的能力在於用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進段和遞歸返回段。當邊界條件不滿足時,遞歸前進;當邊界條件滿足時,遞歸返回。
js遞歸錯誤