今天写了一个递归方法 递归遍历一个树结构的数据 根据id找到对应的text,递归代码简单 却出现了无限递归 导致每次打开网页都会导致浏览器崩溃 研究了一中午 最后在循坏语句中for(i=0;i<array.length;i++)中加了var就好了;原来是i作用域的问题导致的,我们都知道声明变量时 用var声明 它就是局部变量 不用var声明 它就是全局变量 ;一般写循环,我都习惯不写var 一般的循环遍历没有问题 但是如果是递归 那就会出问题。在此记录一下。也许你会说为什么不用forEach遍历呢 forEach就不存在这个问题 再次再说一下:forEach没办法break or continue 跳出循环 所以这里才会用for in循环。
$scope.filterOrg=function (orgId,array) {
if(!$scope.place){
for(var i=0;i<array.length;i++){
console.log("y"+$scope.y++)
if($scope.y>2000){$scope.place="溢出来";break}
if(orgId==array[i].orgId){
$scope.place=array[i].text
break
}else if(array[i].children){
$scope.filterOrg(orgId,array[i].children)
}
}
}else{
return
}
}