【JS】基础-流程控制语句

239 阅读4分钟

一、语句

1. 概念

  1. 表达式在 JavaScript 中是短语,那么语句就是 JavaScript的整句或命令。
  2. JavaScript 语句,以分号或换行结尾。
  3. JavaScript程序就是一系列可执行语句的集合。
  4. 默认情况下,JavaScript解释器会按照语句的编写顺序依次执行,但有些语句或控制结构改变语句的默认执行顺序。如 "条件语句" "循环语句" "跳转语句"。

2. 分类

  • 表达式语句,是js中最简单的语句
  • 复合语句,用花括号把多条语句括起来,形成复合语句
  • 空语句
  • 声明语句,声明变量、声明函数等
  • 条件语句
  • 循环语句
  • 跳转语句

二、 流程控制结构

1. 顺序结构

image-20230712144154547.png

2. 分支结构

image-20230712144908408.png

3. 循环结构

image-20230712144930751.png

三、条件语句(实现分支结构)

1. 单向分支

最简单的条件语句

if (条件表达式) {
	语句;
}

2. 双向分支

表示如果……就……否则……

if (条件表达式) {
	语句;	//条件为true,执行这里
} else {
    语句;	//条件为false,执行这里
}

3. 多向分支

进行多条件判断

if (条件表达式) {
	语句;
} else if (条件表达式) {
    语句;
} else if (条件表达式) {
    语句;
} else {
    语句;
}

4. 多向分支

当需要分类讨论时使用

每个分支需要主动调用break语句跳出

switch (表达式) {
    case 表达式可能的值:语句;break;
    case 表达式可能的值:语句;break;
    case 表达式可能的值:语句;break;
    default:语句;
}
// 出生年份判断生肖
function animalSign(year) {
  var num = ((2000 - year) % 12 + 12) % 12;
  switch (num % 12) {
    case 0: console.log('您的生肖是龙'); break;
    case 1: console.log('您的生肖是兔'); break;
    case 2: console.log('您的生肖是虎'); break;
    case 3: console.log('您的生肖是牛'); break;
    case 4: console.log('您的生肖是鼠'); break;
    case 5: console.log('您的生肖是猪'); break;
    case 6: console.log('您的生肖是狗'); break;
    case 7: console.log('您的生肖是鸡'); break;
    case 8: console.log('您的生肖是猴'); break;
    case 9: console.log('您的生肖是羊'); break;
    case 10: console.log('您的生肖是马'); break;
    case 11: console.log('您的生肖是蛇'); break;
    default: console.log('输入错误');
  }
}
animalSign(2000)

5. 嵌套分支

if (表达式) {
    if (表达式) {
        ....
    }
    ...
} else {
    ...
}

四、循环结构(实现循环结构)

1. while循环

while (条件表达式) {
	语句;
}

循环成功(非死循环)的条件:

  1. 循环的条件表达式不能永远都成立
  2. 随着循环次数的增加,条件表达式越来越趋向于不成立
//计算1~10之间所有的奇数的乘机
let num = 1;
let mul = 1;
while (num <= 10) {
  mul *= num
  num += 2
}
console.log('1~10所有奇数的乘机', mul)

2. do while循环

do {
	语句;
} while (条件表达式)

while 循环与 do while 循环的区别:

  1. do while 只有第一次执行循环体代码没有判断,以后每一次都经过判断再执行

  2. 实现循环次数超过 1 次的循环, while 与 do while 的条件表达式、函数体、循环标记变量,都一样

//循环输出0~10之间所有的偶数
var a = 0;
do {
    console.log(a);
    a += 2;
} while ( a < 11);
console.log('循环结束之后循环标记变量的值:',a)

3. for循环

for (循环标记变量初始化; 条件表达式; 循环标记变量的变化) {
	语句;
}
for (var i = 1;i < 5;i ++){}

for 循环的特点:

  1. 循环标记变量初始化在循环开启之前执行一次
  2. 条件表达式在每次循环之前都会进行判断
  3. 循环标记变量的变化每次循环体语句执行完毕后执行
//10的阶乘
let num = 1
for (let i = 1; i <= 10; i++) {
  num *= i
}
console.log(num); //3628800

//1!+2!+3!
for (var i = 1, sum = 0; i <= 3; i++) {
  for (var j = 1, res = 1; j <= i; j++) {
    res *= j;
  }
  sum += res;
}
console.log('结果是', sum);   //9

五、跳转语句

1. break

  • 在 switch case 中使用:

    在本 case 中结束,没有break 会继续执行下一个 case

  • 在循环结构中使用:(包括 for 循环、while循环、do while 循环)

    break 表示结束整个循环,一旦执行到 break,整个循环结束了

for (let i = 1; i < 99; i++) {
  console.log(i); //1 2 3
  if (i == 3) { break };
}

2. continue

  • 在循环结构中使用:(包括 for 循环、while循环、do while 循环)

    continue 表示跳出本次循环,下一次循环继续; 一旦执行到 continue,本次循环后面的代码会跳过

for (let i = 1; i < 8; i++) {
  if (i == 3) { continue };
  console.log(i); //1 2 4 5 6 7
}