目录
什么是流程控制
一段代码执行的顺序是对程序的结果有直接影响的,所以我们要通过控制代码的执行顺序来达到我们想要的结果
简单来说流程控制就是来控制我们的代码是按照什么样的结构顺序来执行的
流程控制主要有三种结构,分别是顺序结构,分支结构和循环结构,这三结构代表三种代码的执行顺序
1.顺序结构
从上到下执行的代码就是顺序结构
2.分支结构
分支结构又分为两种语句,分别是if语句和switch语句
其中,if语句有分为单分支,双分支和多分支
(1)if语句——单分支:
执行思路:
如果if里面的条件表达式结果为真true则执行中括号里面的执行语句
如果if里面的条件表达式结果为假flase则不执行中括号里面的语句则执行if语句后面的代码
案例1:使用 if 语句实现只有当年龄(age 变量值)大于等于 18 周岁时,才输出“已成年”, 否则无输出,示例代码如下。
var age = 15/19; // 声明变量 age 并赋值为 15(没有任何显示)/19
if (age >= 18) {
console.log('已成年'); // 在控制台输出“已成年”
}
案例2:进入网吧
//1.弹出prompt输入框,用户输入年龄,程序把这个值保存到变量中
var age = prompt('请输入你的年龄');
//2.使用if语句来判断年龄,年龄大于18可以进入
if (age > 18) {
alert('你可以进入网吧')
}
(2)if…else双分支语句
执行思路:
如果表达式结果为真执行语句1,否则执行语句2
if里面的语句1和else里面的语句2最终只能有一个语句执行 2选1
else后面直接跟中括号
案例1:进入网吧:年龄大于18岁才可以进去网吧,否则不可以
//1.弹出prompt输入框,用户输入年龄,程序把这个值保存到变量中
var age = prompt('请输入你的你年龄');
//2.使用if语句来判断年龄,年龄大于18可以进入
if (age > 18) {
alert('你可以进入网吧')
} else {
alert('未成年不可以进入')
}
(3)if…else if…else语句(多分支语句)
语法:
if (条件表达式1) {
语句1
} else if (条件表达式2) {
语句2
} else if (条件表达式3) {
语句3
} else {
最后的语句
}
执行思路:
如果条件表达式1满足就执行语句1,执行 完毕后,退出整个if分支语句
如果条件表达式1不满足,则判断条件表达式2,满足的话执行语句2
以此类推
如果所有条件都不成立执行else里面的语句
案例1:判断成绩
1.90分(含)以上,输出A
2.80分(含)-90分(不含),输出B
3.70分(含)-80分(不含),输出C
4.60分(含)-70分(不含),输出D
5.60分(不含)以下,输出E
//按照从大到小判断的思路
//弹出输入框让用户输入分数,保存到变量中
var score = prompt('请输入你的成绩');
//使用多分支if elseif语句来分别判断输出不同的值
if (score >= 90) {
alert('优秀');
} else if (score >= 80) {
alert('良好’)
} else if (score >= 70) {
alert('中等')
} else if (score >= 60) {
alert('及格')
} else {
alert('不及格')
}
switch语句
case——数字,字符串,枚举型。
表达式的值会与结构中的case的值进行比较
如果存在匹配全等(===),则该case关联的代码会被执行,并在遇到break就停止,整个switch语句代码执行结束
如果所有的case的值都和表达式的值不匹配 ,则执行default里面的代码
**注意:**执行case里面的语句的时候,如果没有break,则继续执行下一个case中的语句
案例1:
使用 switch 语句判断变量 week 的值,若 week 变量的值为 1~6 时输出“星期一”~“星期 六”,为 0 时输出“星期日”,若没有与 week 变量的值相等的 case 值时输出“错误”。
var week=prompt('请输入日期:')
switch(week){
case '7': //表达式 等于7时要执行的代码
console.log('星期日')
break
case '1':
console.log('星期一')
break
case '2': //表达式 等于2时要执行的代码
console.log('星期二')
break
case '3': //表达式 等于3时要执行的代码
console.log('星期三')
break
case '4': //表达式 等于4时要执行的代码
console.log('星期四')
break
case '5':
console.log('星期五')
break
case '6':
console.log('星期六')
break
default: //表达式 不等于任何一个值时要执行的代码
console.log('错误')
}
案例:查询水果的价格 日常生活中,我们去水果店买水果,结账时售货员要查询所买水果的价格来计算总价,例 如当售货员输入“苹果”时,查询苹果的价格,输入“桃子”时,查询桃子的价格。本案例将 使用 switch 语句实现查询水果的价格。
var fruit = prompt('请你输入查询的水果')
switch (fruit) {
case '苹果':
alert('苹果的价格是3.5元/斤');
break; //如果没有break,则继续执行下一个case中的语句
case '香蕉':
alert('香蕉的价格是2元/斤');
break;
case '葡萄':
alert('葡萄的价格是5元/斤');
break;
default:
alert('没有这个水果')
}
switch语句和if else if语句的区别
1.一般情况下,这两个语句可以相互替换
2.分支比较少时,推荐使用if…else语句,执行效率会更高
3.分支比较多时,推荐使用switxh语句,执行效率更高,而且结构更清晰
4. switch…case语句通常处理case为比较确定值的情况,
而if…else…语句更加灵活,常用于范围判断(大于、等于某个范围)
5. switch语句进行条件判断后直接执行到程序的条件语句,效率更大。
而if…else语句有几种条件,就得判断多少次。
循环结构
循环结构是为了在程序中反复执行某个功能而设置的一种程序结构,它用来实现一段代码
的重复执行。
循环语句由循环体和循环的终止条件组成。
- 循环体:一组被重复执行的语句。
- 循环的终止条件:循环结束的条件。
• for - 循环代码块一定的次数
• for/in - 循环遍历对象的属性
• while - 当指定的条件为 true 时循环指定的代码块
• do/while - 同样当指定的条件为 true 时循环指定的代码块
1.for
初始化变量:可以使用var关键字声明一个新的变量,这个变量用来帮助我们记录循环次数s
条件表达式:用来决定每一次循环是否继续执行,如果结果为true就继续循环,否则就退出循环
操作表达式:就是每次循环最后执行的代码。
经常用于我们计数器变量进行更新(递增或者递减)
利用 for 语句在控制台输出 1~100 的整数,示例代码如下。
for (var i = 1; i <= 100; i++) {
console.log(i); // 输出 1、2、3、4、5、6……100
}
① 执行“var i = 1”初始化变量。
② 判断“i <= 100”是否为 true,如果为 true,则向下执行,反之,结束循环。
③ 执行循环体,通过“console.log(i)”输出变量 i 的值。
④ 执行“i++”,将 i 的值加 1。
⑤ 判断“i <= 100”是否为 true,和第②步相同。只要满足“i <= 100”这个条件,就会一 直循
环。当 i 的值加到 101 时,判断结果为 false,循环结束。
for循环执行相同的代码
var num = prompt('请你输入输出的次数');
for (var i = 1; i <= num; i++) {
console.log ('你好');
}
for循环执行不同的代码
//输出一个人1-100岁
for (var i = 1; i <= 100; i++) {
console.log('这个人今年' + i + '岁了');
}
for循环案例
1.求1-100之间所有整数的累加和
var sum = 0; //求和的变量
for (var i = 1; i <= 100; i++) {
// sum = sum + i;
sum += i;
};
console.log(sum); //5050
2.求1-100之间所有偶数和奇数的和
var even =
var odd = 0;
for (var i = 1; i <= 100; i++) {
if (i % 2 == 0) {
even += i;
} else {
odd += i;
}
}
console.log('1-100之间所有偶数和是' + even); //2550
console.log('1-100之间所有奇数和是' + odd); //2500
双重for循环
循环嵌套
循环嵌套是指在一个循环语句中再定义一个循环语句的语法结构
语法
for (外层的初始化变量; 外层的条件表达式; 外层的操作表达式) {
for (里层的初始化变量; 里层的条件表达式; 里层的操作表达式) {
执行语句;
}
}
循环过程
外层循环一次,里面循环全部
for (var i = 1; i <= 3; i++) {
console.log('这是外层循环第' + i + '次');
for (var j = 1; j <= 3; j++) {
console.log('这是里层循环的第' + j + '次');
}
}
案例 :
1.打印五行五列星星
1.内层循环负责一行打印五个星星
2.外层循环负责打印五行
for (var i = 1; i <= 5; i++) {
for (var j = 1; j <= 5; j++) {
document.write('☆');
}
document.write(''+'<br>') //换行
}
2.打印九九乘法表
案例分析:
一共有9行,但是每一行的个数不一样,因此需要用到双重for循环
外层的for循环控制行数i,循环9次,可以打印9行
内层的for循环控制每行公式j
核心算法:每一行公式的个数正好和行数一致,j<=i
2.while循环
用于在满足特定条件时重复执行一段代码,直到条件不再满足为止
利用 while 语句在控制台输出 1~100 的整数,示例代码如下。
var i = 1;
while (i <= 100) {
console.log(i);
i++;
}
① 执行“var i = 1”,初始化变量 i;
② 判断“i <= 100 ”是否为 true,如果为 true,向下执行③,否则结束循环;
③ 执行循环体,通过“console.log(i)”输出变量 i 的值;
④ 执行“i++”,将 i 的值加 1;
⑤ 判断“i <= 100”是否为 true,和第②步相同。只要满足“i <= 100”这个条件,就会一
直循环。当 i 的值加到 101 时,判断结果为 false,循环结束。
案例:打印出三角形
var star = "*";
var row = 1;
while(row <= 5){
var col = 1;
while(col <= row){
document.write(star);
col++;
}
document.write("<br />");
row++;
}
3.do…while语句
do…while是一种后测试循环语句,即循环体中的代码执行后才会退出条件进行求值,
使用 do…while 语句在控制台输出 1~100 的整数,示例代码如下。
var i = 1; //初始化循环变量
do {
console.log(i);
i++; //更新循环变量
} while (i <= 100)
① 首先执行“var i = 1”,初始化变量 i;
② 执行循环体,通过“console.log(i)”在控制台输出变量 i 的值;
③ 执行“i++”,将变量 i 的值加 1;
④ 执行表达式“i <= 100”,若表达式的值为 true,继续执行②,只要表达式的值为 true
将一直循环,当 i 的值为 101 时,将结束循环。
案例:
求1-100所有偶数的和
var sum = 0; //1到100所有偶数的和
var i = 1;
do{
if(i % 2 == 0){
sum += i;
}
i++;
}while(i <= 100);
console.log(sum)
4.跳转语句
应用场景:循环语句一般会根据设置好的循环终止条件停止执行,在循环执行过程中,若
需要跳出本次循环或跳出整个循环,就需要用到跳转语句。
常用的跳转语句如下。
⚫ continue
⚫ break
(1)continue
continue 语句用来立即跳出本次循环,也就是跳过了 continue 语句后面的代码,继续下一次循环。
for (var i = 1; i <= 5; i++) {
if (i == 3) {
continue; // 跳出本次循环,直接跳到 i++
}
console.log('我吃完了第' + i +'个苹果');
}
案例,打印1-15,其中5的倍数不打印
for (let i=1;i<=15;i++){
if (i%5==0){
continue
}
console.log(i)
}
(2)break
break 语句在循环语句中使用时,其作用是立即跳出整个循环,也就是将循环结束。
for (var i = 1; i <= 5; i++) {
if (i == 3) {
break; // 跳出整个循环
}
console.log('我吃完了第' + i +'个苹果');
}