js for循环注意事项

本文分享了作者在实现递归遍历树形结构时遇到的无限递归问题及解决方案。通过正确使用变量声明避免作用域冲突,确保递归正常进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写了一个递归方法 递归遍历一个树结构的数据 根据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
            }

    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值