流程控制
根据代码结构分类:
顺序结构——从上往下,依次执行
选择结构——选择性执行某些语句
if语句
if-else语句
if-else-if语句
switch语句
循环结构——根据条件重复执行某些代码
for循环
while循环
do-while循环
学习建议——
搞清楚每一种结构的语法
搞清楚他们的执行流程
搞清楚他们的应用场景
选择语句
if语句
语法
if(money >= 100){ console.log('中午请吃饭') }
执行流程
如果表达式成立,就执行语句体,否则就算了
作用
主要用于判断一个条件,只有条件成立,才会执行相应的代码
if-else语句
语法
if(money >= 100){ console.log('中午请吃饭') }else{ console.log('放学别走') }
执行流程
如果表达式成立,就执行语句体1,否则执行语句体2
作用
主要用于判断一个条件,不管条件成立成立与否,都会执行相应的代码
if语句的嵌套
var gender = prompt('请输入您的性别(男/女):') if(gender = "女"){ alert('你妈妈喊你回家吃饭') }else{ var age = Number(prompt('请输入您的年龄:')) if(age >= 18){ alert('给你点刺激的东西看') }else{ alert('喊你回家吃饭') } }
if-else-if语句
语法
if(条件表达式){ 语句体1 }else if(条件表达式2){ 语句体2 }else if(条件表达式3){ 语句体3 }else{ 语句体n }
作用:用于判断多个条件
执行流程
1、从上到下,依次判断每一个条件,如果满足,就会执行相应的语句体,剩下的条件即使满足,也不会执行
2、如果前面的条件都不满足,就会执行最后的else语句
带判断的if-else-if
if (grade < 0 || grade > 100) { alert('你输入的成绩不合法') } else { if (grade >= 90 && grade <= 100) { alert('奖励兰博基尼,带电池') } else if (grade >= 80 && grade < 90) { alert('奖励自行车') } else if (grade >= 70 && grade < 80) { alert('奖励滑板') } else { alert('奖励一顿胖揍') }
JavaScript switch 语句
switch 语句用于基于不同的条件来执行不同的动作。
语法
switch(表达式或变量){ case 值1: 执行代码块 1 break; case 值2: 执行代码块 2 break; …… default: 前面所有条件都不满足,执行 break;(分号可以不要) } // 示例 switch(num%2){ case 1: alert('奇数') break case 2: alert('偶数') break default : alert('你输入的不是一个整数') break }
执行流程
根据表达式/变量的值依次进行判断
如果满足对应的条件,就执行相应的语句体
如果都不满足,就执行default中的语句
case穿透
原因
break是用来结束循环和switch语句的
如果忘记写break,就会产生case的穿透
流程
case穿透会从满足条件的那个case语句开始,往后依次执行
即使后面的case不满足条件,也会执行对应语句体。直到遇到下一个break才会停止
选择语句区别
if语句和if-else语句——一次只能判断一个条件
if-else-if和switch——一次可以判断多个条件
所有switch语句都可以使用if-else-if改写
但是if-else-if不一定能用switch改写
应用场景
if语句,主要用于范围的判断;switch语句主要用于等值判断
如果结果只有固定几个取值-switch,层次清晰
JavaScript for 循环
语法
for (var i=0;i<cars.length;i++) { document.write(cars[i] + "<br>"); } for (初始化语句;条件判断语句;循环增量语句) { 循环体语句; }
执行流程
- var i=0
- i<cars.length
- i++
- document.write(cars[i] + "<br>")
执行顺序:1--2--4--3>2--4--3>2--4--3>2--4--3……(当i自增到不满足2时,跳出循环)
验证:循环变量是可以直接使用在循环体中
for循环求和:
- 在循环的外面定义一个求和变量(框变量)
- 在循环中拿到每一个元素,累加到框变量中(sum += i)
- 循环结束之后,框变量中的值,就是最终求和的结果
使用ES6语句_模板字符串改进字符串拼接操作
- 输入班级人数
- 根据输入的人数,输入学生成绩
- 计算总成绩
- 计算平均成绩
var num = +prompt(`请输入班级人数:`) var sum = 0 var average = 0 for(var i=1;i<=num;i++){ var num2 = +prompt(`请输入第${i}位学生的成绩`) sum += num2 // 累加 } console.log(`总成绩为:${sum}`) console.log(`平均成绩为:${sum/num}`)
把('请输入第' + i + '位学生的成绩')改为(`请输入第${i}位学生的成绩`),动态获取i值拼接入内容
var cows = +prompt('请输入您想要的星星行数:') for (var i = 1; i <= cows; i++) { for (var j = 1; j <= i; j++) { document.write('☆') } document.write('<br>') }
for (var i = 1; i <= 9; i++) { for (var j = 1; j <= i; j++) { document.write(`${i}*${j}=${i*j} `) } document.write('<br>') }
外层循环控制行数,内层循环控制列数
while循环
基本格式:(一般用于写死循环,无法控制循环次数) while (条件) { 需要执行的代码 } 完整格式(可以控制循环次数) 初始化语句 while (条件判断语句) { 循环体语句; 循环增量语句; } while (i<5) { x=x + "The number is " + i + "<br>"; i++; }
本质是把for循环的语句换了个位置
执行顺序:条件判断-循环体-循环增量-条件判断……
do-while循环
初始化语句 do{ 循环体语句; 循环增量语句; }while (条件判断语句)
特点
——先执行循环体,再判断条件
即使循环的条件不成立,也会执行一次循环体