JavaScript 代码块 流程控制(IF)break 和 continue label

一、代码块

      程序是由一条一条语句构成。语句按照从上往下的顺序一条一条来执行。

      在JS中可以使用{}来为语句进行分组,同一个{}中的语句是一组语句,要么都执行,要么都不执行。{}中的一组语句也称为一个代码块。

特别注意:Js中的代码块,只有分组作用,没其他用途(比如隔离),代码块中的内容,在外部是完成可见的。

exp: 

代码块1

{  var a=10;                           //代码块1中的语句1  声明一个变量a 赋值10

   alert("come on,baby");        //代码块1中的语句2

    console.log("宝贝,快来");     //代码块1中的语句3

 }    

console.log(a);    //返回 10 。  代码块外依然可以看到a

二、流程控制  if switch while for

   程序默认从上往下顺序一条一条执行,有时候,不想顺序执行。通过流程控制语句可以控制程序执行流程,使程序可以根据一定条件来选择执行。

语句分类:

1、条件判断语句 

条件判断语句,在执行某语句之前,进行判断,条件成立则执行,不成立则不执行。

语法一: 

if(条件表达式){     //条件表达式返回结果为true  则 执行代码块中语句

 语句;   ...... //   如果要多条语句一起执行,就用代码块。一条语句可以不用{}

}       

语法二:

if(条件表达式1) {

语句;.... }  else 【if(条件表达式N) {    //【】里面的else if 可以嵌套无数个条件

语句;...} else】 {   

语句;...}     

解释:从上到下依次对条件表达式求值,遇到表达式为true,就执行对应的语句,if语句结束,不会再继续向下判断了。值为false,继续向下判断。  (只会执行 一个代码块 或 语句)。 由于此特性,可能导致不会报错,但永远不被执行的死代码产生。

exp:  var age=15;

       if(age>7) {alert("你可以上小学了");) else if (age>13) {

          alert("你可以上中学了");} else    // 15>7,第一个表达式为true,执行上小学。后面就都是死代码(不报错,但没用的代码)

         {alert("你可以上大学了");}

2、条件分支语句 switch

语法:    switch(条件表达式) {     

 case 表达式1:  语句; break;            //break可跳出switch语句  case 表达式2:  语句; break;

           ......

 default:  语句或代码块; break; }    //前面匹配全是false时,执行default语句。最后一个break写不写都一样(建议写)

说明:将 条件表达式(一般为变量) 和  case表达式(一般为一个字面量)做全等(===)比较 ,结果返回true时,从当前case处执行代码(所以如果不用break的话,后面代码就会全部执行,当然也就不需要代码块了)。如果返回false,继续向下判断

注意:变量也可以作为表达式。

if else... if else 在表达式里面 判断 条件是=== 的情况下 和  switch语句功能是一模一样的,可互相代替,用哪个语句,看习惯了

3、循环语句  (do...)while  for

反复执行一段代码。

3.1 while 循环

语法:  和if 相似

while(条件表达式) {    //  先对条件表达式进行判断,如果值为true,进入循环体              

语句....     //代码块中的语句也叫循环体

}

执行流程:  先对条件表达式进行判断,如果值为true,进入循环体。执行完成后,再一次对表达式进行判断,如果值为true,继续执行循环体,以此类推,直到表达式值为false,跳出循环。

特别注意:如果条件表达式给的值永远为true,比如while(true),或while(1),并且后面没加限制条件,程序进入不停止死循环,一直执行到关闭浏览器。所以一旦使用用为true的条件表达式,循环体中必须加入限制条件。

exp:

var n=1;   // 初始化变量 n=1

while(true) {   //用为true 的表达式

alert(n++);

  if(n==10) {  //加入条件限制

  break;}   //break可以终止循环。

}

创建循环步骤:

1、初始化一个变量:  var i=0;

2、设置循环表达式:while(i<10)

3、循环体中定义更新表达式: i++

3.2 do...while 循环

语法:

do {

语句;...

} while(条件表达式)

执行流程:不管条件表达式为true还是 false ,先执行一次循环体(和while不一样的地方)。然后再对条件表达式进行判断,如果值为true,继续循环体。再一次对表达式进行判断,如果值为true,继续执行循环体,以此类推,直到表达式值为false,跳出循环。

while和do..while差异:do...while 可以保证循环体至少执行一次,而while不能。

3.3 for 循环    改进while循环   将初始化表达式,条件表达式,更新表达式  放在一起

语法:

for(初始化表达式;条件表达式;更新表达式) {

语句;...                           // 可继续嵌套for循环

}

执行流程:

1、执行初始化表达式,初始化变量。(初始化表达式只会执行一次)

2、执行条件表达式,判断是否执行循环。如果为true,执行循环体,如果为false 终止循环

3、执行更新表达式,更新表达式执行完毕以后,重复第二步

特别注意:

for循环三个部分都可以省略,也可以写在外部

exp:初始化和更新表达式 写在外部    (完全类似while)

var i =0;

for( ; i<10; ) {     //此案例 for语句中只写了条件表达式,初始化表达式和更新表达式都写在了外部

alert(i++) ; }

exp: 三部分都省略(死循环)

for( ; ; ) {         //三部分都没有,进入死循环。 慎用

alert("hello") ; }  

三、break 和 continue

1、break关键字

 用于立即退出  离break 最近的 switch 和 循环, 不能应用于单独的if语句,会报错

exp:

for(var i=0; i<5; i++) {

console.log("外层循环"+i);

    for(var j=0;j<5;j++) {

    console.log("内层循环"+j);

    if(j==2){

    break;}  //这个break 是用于退出离它最近的for循环(内层循环),跟if 没关系。如果没有for循环,break单独放在if里,就报错

     }

}

☆label标签

如果某段代码有多个for循环嵌套,我想终止其中特定某一个for循环,找离它最近的位置又很麻烦。此时可为循环语句创建一个label(名字随便取),来标识当前的循环。

语法: label:循环语句

标识以后,可以在break后跟着一个label名,这样break可以结束指定循环,而不是离它最近的循环。

exp:

outer:                                    //给外层for循环一个叫做outer的label标签

for(var i=0; i<5; i++) {

console.log("外层循环"+i);

    for(var j=0;j<5;j++) {

    console.log("内层循环"+j);

    if(j==2){

    break outer;}  //在j==2时,直接终止外部循环,而不是最近的内部循环。

     }

}

2、continue 关键字

跳过 当次 循环,继续执行剩余循环(一般搭配if语句,跳过满足特定条件的某一次循环)。   总结: contine只跳过一次,break是整个循环结束

同样 continue 默认只会对离它最近的循环产生影响。  同样,contine可以使用label标签,语法也一样

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值