猿问

js多层循环的中断问题

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'
}
///--------------------------------------------------return
functiontestReturn(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--
1
2
21
22
23
24
241
242
243
244
2441
2442
3
4
5
6
--return1--
1
2
21
22
23
24
241
242
243
244
2441
2442
return中断多层循环的时候,用递归和直接循环,结果不同。
同样的条件用continue、break中断,却能得到一致的结果。
也就是说只有在直接循环且return中断的条件下,是跳出所有循环的,其他情况都留有最初的一层循环,怎么解释上述情况的不同。
1
2
21
22
23
24
241
242
243
244
2441
2442
3
4
5
6
浮云间
浏览 374回答 2
2回答

守着一只汪

return是返回到函数的调用处,所以,当你使用递归的方法运行的时候,执行到p==2442的时候,会逐层向上返回,一直返回到数据的最外层,然后输出剩下的3,4,5,6。但是第二种方法就不一样了,只有一个调用处,当执行到p==2442的时候直接返回到调用处了,也就是退出了,所以剩下的3,4,5,6也就没有输出。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答