JS流程控制
来自CloudWiki
流程控制
条件分支语句
if if-else switch三元运算符
循环语句
while for do-while
流程控制语句
break continue label
作用:改变程序执行流程
break:语句“跳出”循环 continue:语句“跳过”循环中的一个迭代
break
break语句会中断循环,并继续执行循环之后的代码(如果有)
实例:
var sum=0; var a=1; while(a<=5){ sum=sum+a; ++a; if(a===3) break; console.log('sum->',sum,'a->',a); } console.log('循环结束后 sum->',sum,'a->',a);
执行结果:
sum-> 1 a-> 2 debugger eval code:7:13 循环结束后 sum-> 3 a-> 3
执行分析:
本段代码本来是执行了sum=1+2+3+4+5这样一个循环流程,但我们加上了a=3时则跳出循环这样一个操作,则有:
第一次循环: sum=0+1=1,a=2
第二次循环: sum=1+2=3,a=3,满足中断条件,跳出循环
continue
continue 语句中断(循环中)的一个迭代,如果发生指定的条件。然后继续循环中的下一个迭代。
实例:
var sum=0; var a=1; while(a<=5){ sum=sum+a; ++a; if(a===3) continue; console.log('sum->',sum,'a->',a); } console.log('循环结束后 sum->',sum,'a->',a);
执行结果:
sum-> 1 a-> 2 debugger eval code:7:13 sum-> 6 a-> 4 debugger eval code:7:13 sum-> 10 a-> 5 debugger eval code:7:13 sum-> 15 a-> 6 debugger eval code:7:13 循环结束后 sum-> 15 a-> 6
执行分析:
第一次循环:sum=0+1=1,a=2
第二次循环: sum=1+2=3,a=3 ,满足条件,返回循环头部执行循环
第三次循环:sum=3+3=6,a=4
第四次循环:sum=6+4=10,a=5
……
for循环
实例1:break
var sum = 0; for(var i=0;i<5;i++) { sum = sum + i; if (i === 3) break; console.log('sum->', sum, 'i->', i); }
执行结果:
sum-> 0 i-> 0 debugger eval code:6:11 sum-> 1 i-> 1 debugger eval code:6:11 sum-> 3 i-> 2
实例二:continue
var sum = 0; for(var i=0;i<5;i++) { sum = sum + i; if (i === 3) continue; console.log('sum->', sum, 'i->', i); }
执行结果:
sum-> 0 i-> 0 debugger eval code:6:11 sum-> 1 i-> 1 debugger eval code:6:11 sum-> 3 i-> 2 debugger eval code:6:11 sum-> 10 i-> 4
可以看到以上两个案例,for循环里,break和continue的作用与前面的是一样的。
实例三:for循环嵌套
for (var i=0;i<3;i++) { for (var j=0;j<3;j++){ console.log('i->',i,'j->',j); } } console.log('循环外i->',i,'j->',j)
执行结果:
i-> 0 j-> 0 debugger eval code:3:13 i-> 0 j-> 1 debugger eval code:3:13 i-> 0 j-> 2 debugger eval code:3:13 i-> 1 j-> 0 debugger eval code:3:13 i-> 1 j-> 1 debugger eval code:3:13 i-> 1 j-> 2 debugger eval code:3:13 i-> 2 j-> 0 debugger eval code:3:13 i-> 2 j-> 1 debugger eval code:3:13 i-> 2 j-> 2 debugger eval code:3:13 循环外i-> 3 j-> 3
执行分析:
执行一次外层循环后,再执行完所有内层循环,然后执行下一次的外层循环
实例四:循环嵌套与循环控制语句
for (var i=0;i<3;i++) { for (var j=0;j<3;j++){ if(i===1&&j===1) break; console.log('i->',i,'j->',j); } if (i===1&&j===1) break; } console.log('循环外i->',i,'j->',j)
执行结果:
i-> 0 j-> 0 debugger eval code:4:13 i-> 0 j-> 1 debugger eval code:4:13 i-> 0 j-> 2 debugger eval code:4:13 i-> 1 j-> 0 debugger eval code:4:13 循环外i-> 1 j-> 1
请同学们参照上述结果,并根据老师课堂讲解,分析程序执行流程。
flag标签
flag是程序员自己定义的变量,作为一个标记(志),标记当前的进程,或者标记某种状态,用来控制程序的流向。
因为程序要实现的功能很多,为了区分各个程序段实现了什么功能就用标志位的值,然后使用if语句判断标志位的值,进入相应的程序实现相应的功能。
实例:
flag:{ console.log('hello'); break flag; console.log('你好'); }
执行结果: