//以下代码迭代太深会造成stack溢出, 改写成不会出错的代码
var queue = ......
var nextItem = function(){
var item = queue.pop();
if(item){
nextItem();
}
}
第一反应当然是直接for循环了, 但是这完全改变了原有的程序结构
在尽可能改动量小的情况下, 可以考虑用定时器的做法
var queue = ......;
var nextItem = function(){
var item = queue.pop();
if(item) {
setTimeout(function(){
nextItem()
},0)
}
}
当然, 严格意义上说, 这已经不是递归了.
文章转载自知乎: 千锋HTML5学院
原文链接:企业面试真题--007