JavaScript 流程控制语句

流程控制主要有三种结构:顺序结构分支结构循环结构。

  • 顺序结构:按照代码的书写顺序,从上到下逐行执行,代码执行完毕后程序结束。

  • 分支结构:根据一定条件,有选择的执行和进入;比如if, if-else, switch

  • 循环结构:某段固定的代码,重复执行多次。for, while, do...while

顺序结构

顺序结构是程序中最简单、最基本的流程控制,它没有特定的语法结构,程序会按照代码的先后顺序,从上而下,一行一行执行,程序中大多数的代码都是这样执行的。

分支结构

分支结构也被称为选择结构。分支结构有特定的语法规则,代码要执行具体的条件判断,条件判断的结果有两个:true 和 false,所以产生分支,按照不同的选择执行不同的代码。

JS语言提供了两种分支结构语句

  • if语句

  • switch语句

单分支

条件:条件可以是任何表达式,并且求值结果不一定是布尔值。JS会自动调用 Boolean()函数将这个表达式的值转换为布尔值。

语句:这里的语句可能是一行代码,也可能是一个代码块(即包含在一对花括号中的多行代码)。

//如果条件成立(条件为true)则执行语句,否则不执行
if (条件) {
  语句
}

双分支

//如果条件成立(条件为true),则执行语句1;如果条件不成立(条件为false),则执行语句2;
//两个语句有且只能有一个执行
if (条件) {
	语句1
} else {
	语句2
}

三分支

//先判断条件1,如果条件1成立,则执行语句1;如果条件1不成立,
//则判断条件2,如果条件2成立,则执行语句2;否则,执行语句3
//有且只能执行一个语句
if (条件1) {
  语句1
} else if (条件2) {
  语句2
} else {
  语句3
}

分支嵌套

单个if语句可以按照某一条件进行判断,如果有多个条件同时参与判断,此时可以使用嵌套if来解决。

使用分支嵌套解决多条件分支,通过外层语句和内层语句的协作,增强程序的灵活性。

分支语句之间可以嵌套:单分支、双分支、多分支之间可以相互嵌套。

if(条件1) {
  if(条件2) {
    代码块1
  } else {
    代码块2
  }
} else {
  代码块3
}

switch语句

switch 语句也是多分支语句,它用于基于不同的条件来执行不同的代码。当要针对变量设置一系列的特定值的选项时,就可以使用 switch。

  • 关键字 switch 后面括号内可以是表达式或值, 通常是一个变量

  • 关键字 case 后面跟具体的值(数字、字符串),值后面跟一个冒号,case的语句中要加 break

  • 当表达式的取值与某个case后面的值相等时(值相等使用全等运算符===),会执行这个case中的代码;如果都不一致,会执行default中的代码

  • break:作用是这个case执行完成,用来结束整个switch语句,只要有一个case执行,其他case就不会执行

注意: 执行case 里面的语句时,如果没有break,则继续执行下一个case里面的语句,所以。case的语句中要加 break。

switch (表达式) {
  case 目标值1:
  语句1;
  break;
  case 目标值2:
  语句2;
  break;
  …
  default:
  语句n + 1;
  break;
}

if和switch区别

  • switch结构能实现的,if都能实现,但是if能实现的,switch不一定能实现。

  • 如果遇到对常量的判断,为了使代码更简洁,优先使用switch选择。

  • If结构,可以用来做布尔值的判断、常量的判断和区间范围的判断,switch只能用来对常量进行判断。

相同点:都可以用于分支判断

不同点:

  • switch结构只能处理等值条件判断的情况

  • if结构适合某个变量处于某个连续区间时的情况

三目运算符

其又名三元运算符;类似分支结构的if…else。

表达式 ? 值1 : 值2;

var res = 2 > 3 ? "正确" : "不正确";
console.log(res);// 不正确


三元运算符也能嵌套:
var m = -6;
var res = m>0 ? '正数' : (m<0 ? '负数' : '零');//负数

for 循环

在程序中,循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句。当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

由循环体及循环的终止条件组成的语句,被称之为循环语句。

for用于创建循环结构,主要用于把某些代码循环若干次,其语法结构如下:

执行流程

  • (1)首先执行【循环变量初始值】

  • (2)接着进行【循环条件】判断,若值=true,则执行循环体,改变【迭代循环变量】

  • (3)重复执行步骤(2),直到【循环条件】的值=false,立即结束循环;

for (循环变量初始值; 循环条件; 迭代循环变量){
	循环体
}
  • 循环变量初始值:一条或者多条语句,这些语句完成一些初始化操作。

    • 比如:var i = 0; 或者 var i = 6; 或者 var i = 0, j = 0; 循环变量初始值可以自由定制

  • 循环条件:这是一个boolean 表达式,这个表达式能决定是否执行循环体。如果表达式结果是 true 继续循环,否则退出循环。

    • 比如:i < 10; 或者 i > 0; 循环条件判断可以自由定制

  • 迭代循环变量:这个部分在一次循环体结束后,下一次循环判断条件判断执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

    • 比如:i++; 或者 i--; 或者 i+=2; 迭代循环变量可以根据需要随意递增或者递减

  • 循环体:这个部分是循环体语句,也就是我们要多次执行的代码。

// 基本使用
for (var i = 0; i < 10; i++) {
 console.log(i);
}

// 把变量提取到外部使用
var i = 0; 
for (; i < count; ) { 
 console.log(i); 
 i++; 
}

//多变量使用
for(var i = 0, j = 0; i+j < 13; i++, j+=2){
  console.log('i=',i,'j=',j);
}

while 循环

while 语句可以在条件表达式为真的前提下,循环执行指定的一段代码,直到表达式不为真时结束循环。

// 基本格式
while (循环条件){
  循环体;
}

// 扩展代码格式
循环变量初始值
while (循环条件){
  循环体;
  迭代循环变量;		// 注意:不能缺少,否则造成死循环
}

执行流程:

  • (1)首先执行【循环变量初始值】

  • (2)接着进行【循环条件】判断,若值=true,则执行循环体,改变【迭代循环变量】

  • (3)重复执行步骤(2),直到【循环条件】的值=false,立即结束循环;

do…while 循环

do... while 语句其实是 while 语句的一个变体。该循环会先执行一次代码块,然后对条件表达式进行判断,如果条件为真,就会重复执行循环体,否则退出循环。

// 基本格式
do{
  循环体;
}while(循环条件);

// 扩展代码格式
循环变量初始值
do{
    循环体;
    迭代循环变量
}while(循环条件);

执行流程:

  • 首先执行【循环变量初始值】,先执行一次【循环体】和改变【迭代循环变量】

  • 接着进行【循环条件】判断,若值=true,则继续执行循环体,改变【迭代循环变量】

  • 重复执行步骤(2),直到【循环条件】的值=false,立即结束循环;

循环嵌套及原理

嵌套循环是指在一个循环语句中再定义一个循环语句的语法结构,当一次循环不能满足实际需求时,可以使用嵌套循环; 在for循环语句中,嵌套一个for 循环,这样的 for 循环语句我们称之为双重for循环,还有三重嵌套循环结构等。

  • 外层循环多用来控制次数;内层循环可以看做外层循环的循环体,所以,外层循环执行一次,内层循环要执行全部次数

  • 内层循环执行的顺序也要遵循 for 循环的执行顺序

  • 把双层循环看成一个表格,内层循环控制一行有多少单元格,外层循环控制有多少行

退出循环

continue 关键字用于立即跳出本次循环,继续下一次循环(本次循环体中 continue 之后的代码就会少执行一次)。

break 关键字用于立即跳出整个循环(循环结束)。

相同点:二者都用于循环,没有循环时,不要使用这两个关键字(switch中break除外)

注意:二者操作的都是当前循环,嵌套循环时对其他循环无影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值