为了账号安全,请及时绑定邮箱和手机立即绑定

js多层循环的中断问题

js多层循环的中断问题

浮云间 2019-04-16 20:26:12
vara={'1':'1','2':{'21':'21','22':'22','23':'23','24':{'241':'241','242':'242','243':'243','244':{'2441':'2441','2442':'2442','2443':'2443','2444':'2444',},},},'3':'3','4':'4','5':'5','6':'6'}///--------------------------------------------------returnfunctiontestReturn(a){for(pina){console.log(p)if(p=='2442')return;if(typeofa[p]=='object'){testReturn(a[p]);}}}functiontestReturn1(a){for(pina){varb=a[p];console.log(p)if(typeofb=='object'){for(ppinb){console.log(pp);varc=b[pp];if(typeofc=='object'){for(pppinc){console.log(ppp);vard=c[ppp];if(typeofd=='object'){for(ppppind){console.log(pppp)if(pppp=='2442')return;}}}}}}}}console.log('--return--')testReturn(a)console.log('--return1--')testReturn1(a)--return--1221222324241242243244244124423456--return1--122122232424124224324424412442return中断多层循环的时候,用递归和直接循环,结果不同。同样的条件用continue、break中断,却能得到一致的结果。也就是说只有在直接循环且return中断的条件下,是跳出所有循环的,其他情况都留有最初的一层循环,怎么解释上述情况的不同。1221222324241242243244244124423456
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

return是返回到函数的调用处,所以,当你使用递归的方法运行的时候,执行到p==2442的时候,会逐层向上返回,一直返回到数据的最外层,然后输出剩下的3,4,5,6。
但是第二种方法就不一样了,只有一个调用处,当执行到p==2442的时候直接返回到调用处了,也就是退出了,所以剩下的3,4,5,6也就没有输出。
                            
查看完整回答
反对 回复 2019-04-16
  • 2 回答
  • 0 关注
  • 373 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信